powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF - DataGrid - Один грид под разные источники данных
6 сообщений из 6, страница 1 из 1
WPF - DataGrid - Один грид под разные источники данных
    #38828656
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть источники данных с одинаковой структурой. Есть грид, в котором я создал столбцы, привязки и прочее для этой структуры данных. Теперь я хочу поставить рядом два грида и два разных источника (но с одной структурой данных) привязать каждый к своему гриду. Как это сделать без копирования всей разметки грида?
...
Рейтинг: 0 / 0
WPF - DataGrid - Один грид под разные источники данных
    #38828657
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т. е. хотелось бы что-то вроде DataTemplate - указал ContentPresenter для одного источника данных, потом рядом поставил для другого. Презентеры намапил на шаблон, в которых вышеописанный мной грид содержится. Не могу понять, как это сделать.
...
Рейтинг: 0 / 0
WPF - DataGrid - Один грид под разные источники данных
    #38829249
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UserControl создаете, в нём Grid с вашей разметкой , контекст биндите. Профит. В чём проблема?
...
Рейтинг: 0 / 0
WPF - DataGrid - Один грид под разные источники данных
    #38832176
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объявляешь DataGrid со всей необходимой структурой как ресурс x:Key="myGrid" (лучше в отдельном словаре) и прописываешь его свойства x:Shared="False", ItemsSource={Binding}. В разметке самого окна пишешь:
Код: xml
1.
2.
<ContentControl Content="{StaticResource myGrid}" DataContext="{Binding Clients}"/>
<ContentControl Content="{StaticResource myGrid}" DataContext="{Binding FavoriteClients}"/>
...
Рейтинг: 0 / 0
WPF - DataGrid - Один грид под разные источники данных
    #38833870
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollОбъявляешь DataGrid со всей необходимой структурой как ресурс x:Key="myGrid" (лучше в отдельном словаре) и прописываешь его свойства x:Shared="False", ItemsSource={Binding}. В разметке самого окна пишешь:
Код: xml
1.
2.
<ContentControl Content="{StaticResource myGrid}" DataContext="{Binding Clients}"/>
<ContentControl Content="{StaticResource myGrid}" DataContext="{Binding FavoriteClients}"/>


Этот вариант у меня получился. Это выглядит так:

Разметка окна

Код: xml
1.
2.
3.
  <ContentControl
	Content="{StaticResource myTable}"
	DataContext="{Binding Source={StaticResource myViewSource}}" />



Разметка файла ресурсов

Код: xml
1.
2.
3.
  <DataGrid 
    x:Key="myTable"
    ItemsSource="{Binding}" />





Roman MejtesUserControl создаете, в нём Grid с вашей разметкой , контекст биндите. Профит. В чём проблема?
Этот вариант у меня тоже получился. Это выглядит так:

Разметка окна

Код: xml
1.
2.
3.
  <ContentPresenter
	Content="{StaticResource myViewSource}"
	ContentTemplate="{StaticResource myDataTemplate}" />



Разметка файла ресурсов

Код: xml
1.
2.
3.
4.
  <DataTemplate
    x:Key="myDataTemplate">
    <vr:MyTableView/>
  </DataTemplate>




Разметка UserControl

Код: xml
1.
2.
3.
4.
5.
<UserControl
    x:Class="MyTableView" > 
  <DataGrid
    ItemsSource="{Binding}" />
</UserControl>





Какой вариант лучше и в каких случаях? В моём случае, похоже, любой подходит.
...
Рейтинг: 0 / 0
WPF - DataGrid - Один грид под разные источники данных
    #38833880
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, нет, вру.

1. Если разные способы к разным источникам данных применять, то работает.
2. Если применить к разным источникам данных способ с ContentPresenter, то работает.
3. А если применить к разным источникам данных способ с ContentControl, то отображается таблица только для последнего элемента, а для первого - не отображается. Т. е. делаю как в способе с ContentControl, но для двух источников данных:

<ContentControl
Grid.Column="0"
Content="{StaticResource myTable}"
DataContext="{Binding Source={StaticResource myViewSource1}}" />

<ContentControl
Grid.Column="1"
Content="{StaticResource myTable}"
DataContext="{Binding Source={StaticResource myViewSource2}}" />

а отображается только таблица для того элемента, который последний использовал ресурс myTable. Т. е. в данном случае это ContentControl с источником данных myViewSource2. Если поменять местами в разметке эти контролы, то отображаться будет только для источника myViewSource1. Почему так? В случае с презентерами и шаблоном данных всё работает в любом порядке.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF - DataGrid - Один грид под разные источники данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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