powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Табконтроол и грид
19 сообщений из 19, страница 1 из 1
Табконтроол и грид
    #39633070
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня ТабКонтрол и в каждую вкладку мне надо вложить один и тот же грид, но с разным ItemSource. Как это сделать? DataTemplate, ControlTemplate или UserControl или ...
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633073
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1,
исходя из описания вопроса нужен разный биндинг итемсорсов. Но что-то мне подсказывает, что Вы предлагает попытать счастья отвечающим Вам в ванговании более подробной описании проблемы и телепатии.
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633076
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Табконтрол сам является ItemControl-ом, так что можно сам источник вкладок ItemsSource задать через привязку, а потом DataGrid.ItemsSource привязывать к TabControl.SelectedItems.ItemsForDataGrid и задать контент для вкладки в виде шаблона с DataGrid-ом
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633081
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТабконтрол сам является ItemControl-ом, так что можно сам источник вкладок ItemsSource задать через привязку, а потом DataGrid.ItemsSource привязывать к TabControl.SelectedItems.ItemsForDataGrid и задать контент для вкладки в виде шаблона с DataGrid-омТаким образом, ты добьешься как раз того, что будет один грид на все вкладки. Но подумай, нужно ли это тебе. Дело в том, что при переключении вкладок и смене источника данных в этом гриде, у тебя будут теряться вводимые данные (если они не закончены), текущая строка в гриде, текущее состояние скроллера и т.п.

Что вообще ты подразумеваешь под "один и тот же грид"? Может все-таки гриды разные, просто у них одинакое описание столбцов? ну и вынеси его в статический ресурс тогда.
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633089
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну я описал грид: его свойства, задал колонки (названия, картинки там, выравнивания и прочее). Получился приличный такой блок XAML кода. Теперь его надо добавить на условно 5 вкладок. Отличаться будет только ItemSource - у меня есть 5 разных списков однотипных данных. Не хочется делать "контрол цэ - контрол вэ"...
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633094
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1задал колонкито есть повторяющийся код в <DataGrid.Columns>, так? ну вот вынеси коллекцию в статический (или динамический ресурс)
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633098
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как это выглядит сейчас:
Код: 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.
38.
39.
40.
41.
42.
43.
	<dx:DXTabControl Margin="10">
            <dx:DXTabItem Header="Вкладка 1">
                <ScrollViewer Style="{StaticResource MainScrollViewer}">
                    <dxg:TreeListControl EnableSmartColumnsGeneration="True" Margin="0" ItemsSource="{Binding MyFirstList}">
                        <dxg:TreeListControl.Resources>
                            <Style TargetType="dxg:TreeListColumn" BasedOn="{StaticResource ColumnStyle}"/>
                            <Style TargetType="dxg:GridColumnHeader">
                                <Setter Property="Height" Value="65"/>
                            </Style>
                        </dxg:TreeListControl.Resources>
                        <dxg:TreeListControl.Columns>
                            <dxg:TreeListColumn Header="Название" Width="6*"/>
                            <dxg:TreeListColumn Header="Владелец" Width="2*"/>
                            <dxg:TreeListColumn Header="Основание" Width="2*"/>
                            <dxg:TreeListColumn Width="50" Style="{StaticResource FixedColumnStyle}">
                                <dxg:TreeListColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <Image Source="{dx:DXImage Image=Open_16x16.png}" Stretch="None"/>
                                    </DataTemplate>
                                </dxg:TreeListColumn.HeaderTemplate>
                            </dxg:TreeListColumn>
                            <dxg:TreeListColumn Header="Дата" Width="100" Style="{StaticResource FixedColumnStyle}"/>
                        </dxg:TreeListControl.Columns>
                        <dxg:TreeListControl.View>
                            <dxg:TreeListView AllowPerPixelScrolling="True" AllowEditing="False" ShowIndicator="False" ShowVerticalLines="False" ShowHorizontalLines="False" NavigationStyle="None" VerticalScrollbarVisibility="Auto"
                                              TreeDerivationMode="ChildNodesSelector" ChildNodesPath="Child"/>
                        </dxg:TreeListControl.View>
                    </dxg:TreeListControl>
                </ScrollViewer>
            </dx:DXTabItem>
            <dx:DXTabItem Header="Вкладка 2">
		TODO
            </dx:DXTabItem>
            <dx:DXTabItem Header="Вкладка 3">
		TODO
            </dx:DXTabItem>
            <dx:DXTabItem Header="Вкладка 4">
		TODO
            </dx:DXTabItem>
            <dx:DXTabItem Header="Вкладка 5">
		TODO
            </dx:DXTabItem>
        </dx:DXTabControl>
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633108
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1,
не знаю это ли имел ввиду Shocker.Pro, но я бы сделал так- ты биндишь к ViewModel свойство выбранной текущей вкладки SelectedItem,
Itemsourse={Binding Items} у тебя для каждой вкладки остается один и тот же, во ViewModel отслеживаешь изменения SelectedItem и в зависимости от того, какая текущая вкладка подставляешь соответственно нужный Items.
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633110
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мешает шаблон для контента вкладки вынести в ресурс?
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633114
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subне знаю это ли имел ввиду Shocker.Pro, но я бы сделал так- ты биндишь к ViewModel свойство выбранной текущей вкладки SelectedItem,
Itemsourse={Binding Items} у тебя для каждой вкладки остается один и тот же, во ViewModel отслеживаешь изменения SelectedItem и в зависимости от того, какая текущая вкладка подставляешь соответственно нужный Items.Почти. Только я необязательно что-то менять через VM - сами вкладки могут браться тоже из ItemsSource, а не задаваться в кода. По крайней мере для TabControl, не знаю, как насчет DevExpress - автор в первом посте технично умолчал о том, какие элементы он использует, рассказывал про Табконтрол
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633116
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЧто мешает шаблон для контента вкладки вынести в ресурс?
А можно сокращенный набросок кода?
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633124
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
<dx:DXTabItem Header="Вкладка 1">
  <ContentPresenter ContentTemplate="{StaticResource MyDataTemplate}" />
</dx:DXTabItem>


Код: xml
1.
2.
3.
<DataTemplate x:Key="MyDataTemplate">
  <ScrollViewer ... 
</DataTemplate>
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633146
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProShocker.ProТабконтрол сам является ItemControl-ом, так что можно сам источник вкладок ItemsSource задать через привязку, а потом DataGrid.ItemsSource привязывать к TabControl.SelectedItems.ItemsForDataGrid и задать контент для вкладки в виде шаблона с DataGrid-омТаким образом, ты добьешься как раз того, что будет один грид на все вкладки. Но подумай, нужно ли это тебе. Дело в том, что при переключении вкладок и смене источника данных в этом гриде, у тебя будут теряться вводимые данные (если они не закончены), текущая строка в гриде, текущее состояние скроллера и т.п.

Что вообще ты подразумеваешь под "один и тот же грид"? Может все-таки гриды разные, просто у них одинакое описание столбцов? ну и вынеси его в статический ресурс тогда.
эту проблему я решал след. образом: для каждой вкладки генерировался свой ContentControl, в который синхронизировал шаблоны элементов TabControl'ов. После этого, мне нужно было просто в качество содержимого подставлять этот ContentControl. То визуальное дерево, которое в нём было построено всегда находится в памяти, но не всегда в дереве окна. Состояния объектов, выделения, изменения при этом сохраняются. А переключение становится значительно быстрее, если шаблон TabItem'а внушительный
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633172
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, а ItemSource, свой для каждой вкладки, то есть грида?
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633205
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1Shocker.Pro, а ItemSource, свой для каждой вкладки, то есть грида?ну так укажи свой Content="{Binding MySource1}" для каждого ContentPresenter-а и привяжись к нему. Или через DataContext
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633208
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesгенерировался свой ContentControlгенерировался кодом?
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633217
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, круть ) спасибо.
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633289
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Вариантов много, 1 из вариантов вот такой:
остается только автоматизировать создание и удаление <TabItem'ов> с заранее созданными элементами урпавления, а не шаблонами. При переключении вкладок шаблоны не очень подходят
Код: 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.
38.
<Window x:Class="WpfApp4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApp4"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <local:MainModel />
    </Window.DataContext>
    <Window.Resources>
        <DataTemplate x:Key="PageTemplate">
            <ListBox ItemsSource="{Binding Items}"/>
        </DataTemplate>
    </Window.Resources>
    <UniformGrid Rows="2">
        <TabControl ItemsSource="{Binding Pages}" ContentTemplate="{StaticResource PageTemplate}">

        </TabControl>
        
        <TabControl>
            <TabControl.Items>
                <TabItem Header="{Binding Pages[0].Name}">
                    <ContentControl Content="{Binding Pages[0]}" ContentTemplate="{StaticResource PageTemplate}"/>
                </TabItem>
                <TabItem Header="{Binding Pages[1].Name}">
                    <ContentControl Content="{Binding Pages[1]}" ContentTemplate="{StaticResource PageTemplate}"/>
                </TabItem>
                <TabItem Header="{Binding Pages[2].Name}">
                    <ContentControl Content="{Binding Pages[2]}" ContentTemplate="{StaticResource PageTemplate}"/>
                </TabItem>
            </TabControl.Items>
        </TabControl>

    </UniformGrid>
</Window>


Код: c#
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.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;

namespace WpfApp4
{
    public class MainModel
    {
        public ObservableCollection<PageModel> Pages { get; } = new ObservableCollection<PageModel>()
        {
            new PageModel(),
            new PageModel(),
            new PageModel(),
            new PageModel()
        };

    }

    public class PageModel
    {
        private static Random _rnd = new Random();
        public string Name { get; } = $"Page {_rnd.Next(0, 50)}";
        public List<string> Items { get; } = Enumerable.Range(_rnd.Next(0,50), _rnd.Next(50, 100)).Select(p => $"Item {p}").ToList();
        public override string ToString() => Name;
    }
}
...
Рейтинг: 0 / 0
Табконтроол и грид
    #39633300
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesостается только автоматизировать создание и удаление <TabItem'ов> с заранее созданными элементами урпавления, а не шаблонами.Я именно так сейчас и сделал, после того, как столкнулся со сбросом состояния при переключениях шаблонов )
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Табконтроол и грид
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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