powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / TabItem Datatempate
5 сообщений из 5, страница 1 из 1
TabItem Datatempate
    #38695947
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Что делаю не так?
Написал шаблон для табитема, создаю их из кода, при переключении между ними состояние их не меняется, как будто это один и тот же табитем.
Код шаблона:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
                <DataTemplate x:Key="TabItemContent" >
                    <DockPanel Margin="0">
                        <Border DockPanel.Dock="Top" Height="Auto" Margin="0,0,0,2" BorderBrush="Black" BorderThickness="1" >
                            <TextBlock Name="StatusBar" Margin="2"  Height="Auto" Padding="5,2,2,4" TextWrapping="Wrap" Background="White" Style="{StaticResource TextDisplay}">Примененный фильтр к данным</TextBlock>
                        </Border>
                        <Grid DockPanel.Dock="Bottom" Margin="0"  Background="Azure">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"></RowDefinition>
                                <RowDefinition Height="Auto"></RowDefinition>
                                <RowDefinition Height="Auto" MinHeight="30"></RowDefinition>
                            </Grid.RowDefinitions>
                            <DockPanel Grid.Row="0" Margin="0" MinHeight="60">
                                <StackPanel DockPanel.Dock="Bottom" Height="30" Orientation="Horizontal" Background="Beige">
                                    <Button Name="bn" Height="20" Content="Новая запись" Margin="2" Style="{StaticResource TextDisplay}" Click="Click_ButtonNewRecord"></Button>
                                    <Button Name="bd" Height="20" Content="Удалить" Margin="2" Style="{StaticResource TextDisplay}" Click="Click_ButtonDeleteRecord"></Button>
                                    <Button Name="be" Height="20" Content="Редактировать" Margin="2" Style="{StaticResource TextDisplay}" Click="Click_ButtonEditRecord"></Button>
                                    <Button Name="bf" Height="20" Content="Фильтр" Margin="2" Style="{StaticResource TextDisplay}" Click="Click_ButtonFilter"></Button>
                                </StackPanel>
                                <DataGrid DockPanel.Dock="Top"  MinHeight="30" Margin="0" SelectionUnit="CellOrRowHeader" FontFamily="Courier New"></DataGrid>
                            </DockPanel>
                            <GridSplitter Grid.Row="1" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Center" Height="3" Background="Aqua"/>
                            <StackPanel Grid.Row="2">
                                <Border Grid.Row="3" MinHeight="30" Margin="0" BorderBrush="Black" BorderThickness="1" >
                                    <StackPanel Grid.Row="4" Orientation="Horizontal" >
                                        <Button Name="bc" Height="20" Content="Отменить" Margin="2" Style="{StaticResource TextDisplay}"></Button>
                                        <Button Name="bs" Height="20" Content="Сохранить" Margin="2" Style="{StaticResource TextDisplay}"></Button>
                                    </StackPanel>
                                </Border>
                            </StackPanel>
                        </Grid>
                    </DockPanel>
                </DataTemplate>



Код c#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        private void SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            if (TreeMenu.SelectedItem != null)
            {
                TreeViewItem tvi = (TreeViewItem)this.TreeMenu.SelectedItem;
                this.TabControl.Visibility = Visibility.Visible;
                TabItem ti = new TabItem();
                ti.Name = "ti" + tvi.Tag.ToString();
                ti.Header = tvi.Header;
                lTabItem.Add(ti);
                this.TabControl.Items.Add(ti);
                this.TabControl.SelectedItem = ti;
                //this.TreeMenu.IsEnabled = false;
                statusBar = this.StatusBar.Text;
                this.StatusBar.Text = "Панель " + ti.Header + " открыта.";
            }
        }



Передвигаю на одной вкладке гридсплитер, перехожу на другую, гридсплитер в положении как на первой, меняю на второй, перехожу на первую - вижу как на второй, состояние первой не сохранилоь.
...
Рейтинг: 0 / 0
TabItem Datatempate
    #38696633
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел подобную тему с табитемом, но у человека проблема с текстбоксом, говорит забиндил и решил проблему.
А как сплитер забиндить.
Создаю в xaml два табитема со сплитерами, запускаю все работает, в каждой табитем свое положение сплитера.
Добавляю ресурсы в табконтрол с шаблоном для табитема и все закладки как сговорились.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
        <TabControl Name="tc1" HorizontalAlignment="Left" Height="305" Margin="822,462,-666,-154" VerticalAlignment="Top" Width="527">
            <TabItem Name="t1" Header="TabItem1">
                <Grid Background="#FFE5E5E5">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"></RowDefinition>
                        <RowDefinition Height="Auto"></RowDefinition>
                        <RowDefinition Height="*"></RowDefinition>
                    </Grid.RowDefinitions>
                    <GridSplitter Grid.Row="1" Height="3" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black"></GridSplitter>
                </Grid>
            </TabItem>
            <TabItem Name="t2" Header="TabItem2">
                <Grid Background="#FFE5E5E5">
                    <Grid.RowDefinitions>
                    <RowDefinition Height="*"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="*"></RowDefinition>
                </Grid.RowDefinitions>
                    <GridSplitter  Grid.Row="1" Height="3" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black"></GridSplitter>
                </Grid>
            </TabItem>
            <TabControl.Resources>
                <DataTemplate x:Key="ContentItem">
                    <Grid Background="#FFE5E5E5">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"></RowDefinition>
                            <RowDefinition Height="Auto"></RowDefinition>
                            <RowDefinition Height="*"></RowDefinition>
                        </Grid.RowDefinitions>
                        <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="Black"></GridSplitter>
                    </Grid>
                </DataTemplate>
                <Style TargetType="{x:Type TabItem}">
                    <Setter Property="ContentTemplate" Value="{StaticResource ContentItem}"/>
                </Style>
            </TabControl.Resources>
        </TabControl>



и кнопку с кодом
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        private void Button_Click_10(object sender, RoutedEventArgs e)
        {
            TabItem ti = new TabItem();
            ti.Name = "ti3" ;
            ti.Header = "Шаблон";
            this.tc1.Items.Add(ti);
            this.tc1.SelectedItem = ti;
        }



после добавления ресурсов я так понимаю статическое описание табитемов игнорируется, шаблон берет верх.
Куда копать?
...
Рейтинг: 0 / 0
TabItem Datatempate
    #38696653
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно ведет себя шаблон в разметке.
Его нет, лепи любые контролы на табитемах.
Как только его вставляю в ресурсы, все контролы в конструкторе на закладках пропадают.
Принцип шаблона как объект между зеркалами, пофиг что разные экзкмпляры табитемов, как будто это ссылки на один табитем из шаблона.
...
Рейтинг: 0 / 0
TabItem Datatempate
    #38697290
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Draginsv,

Мда. То что предлагает WPF - ты не используешь. Зачем такой подход?
Там где ты хочешь использовать дататемплейт - тебе достаточно на уровне ресурса (юзерконтрола) добавить его в ресурсы.
В дататемплейте укажи лишь дататайп. Все остальное за тебя сделает ВПФ
...
Рейтинг: 0 / 0
TabItem Datatempate
    #38697554
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unknownfromrus ,

Спасибо за консультацию, но я новичок в впф.
Для начала я хочу понять почему сплитер в шаблоне ведет себя так, а именно при переходе по закладкам его индивидуальное состояние для каждой вкладки не сохраняется - везде одно положение. Как будто это как со свойствами зависимости - мгновенное реагирование объекта на изменение значения свойства. Типа двигая сплиттер, изменяем шаблон, на который ссылаются вкладки. Так?
Мне нужно чтобы вкладки были построены не по одному "снимку", а по одному "сценарию" и они были полностью независимы.
Ваш вариант я пока не понял.

Дизайн вкладки я хочу сделать универсальным
спиттер должен либо пользователем либо программно перемещаться между табличной и детальной частью представления данных.
Компобоксом для редактирования я пользоваться не хочу. Для подстановки Id ключа в детальную область, я хочу использовать вновь
рожденную вкладку соответствующего источника и так далее по дереву данных. Для этого мне понадобиться наверное создать контрол,
где он состоит из Лейблы, текстбокса для строки, кнопки вызова вкладки для выбора и невидимого текстбокса с Id ключа выбранного.
Но как это реализовать, я пока не имею опыта.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / TabItem Datatempate
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]