Какой самый последний лучший способ перемещения данных между элементами управления / запросами и элементами представления - PullRequest
2 голосов
/ 18 августа 2010

У меня есть несколько вариантов комбинированного списка, которые пользователь может выбрать в окне WPF. Каждый из этих полей со списком связан с различными таблицами через EDMX. Комбо не связаны друг с другом.

Я ищу мастера / детальную функциональность. Когда пользователь выбирает кого-либо из выбранных в выпадающем списке (мастер), результаты запроса (детали), построенные из выбора (параметра), должны отображаться в разделе таблицы данных окна.

Сетка данных НЕ определена явно, так как она будет содержать разные данные в зависимости от того, из какого списка был выбран. Итак, для сетки данных я использую:

<StackPanel Grid.Row="1" Height="167" Name="stackPanel4" VerticalAlignment="Top" DataContext="{StaticResource tbl_MyGenericDataGridViewSource}">
            <DataGrid AutoGenerateColumns="True" Height="166" Name="dataGrid1" Width="760" ItemsSource="{Binding}" />
</StackPanel>

Каков наилучший кеш данных между результатами запроса и сеткой данных?
Должен ли я использовать набор данных?

Это было бы то, что я могу связать с сеткой данных в событии выбора в выпадающем списке или событии возврата запроса. Я хочу сделать это, используя преимущества WPF Wizardry Framework 4.0.

1 Ответ

0 голосов
/ 27 марта 2011

Я ничего не знаю о EDMX. Но для этого я бы создал класс модели простого представления, который бы выставлял свойства ParentDataView, ChildDataView и Text, заполнил их коллекцию и затем сделал бы что-то вроде этого:

<ComboBox x:Name="selectTable" 
          ItemsSource="{Binding {StaticResource TableCollection}"             
          DisplayMemberPath="Text"/>
<DataGrid ItemsSource="{Binding ElementName=selectTable, Path=SelectedItem.ParentDataView}"/>
<DataGrid ItemsSource="{Binding ElementName=selectTable, Path=SelectedItem.ChildDataView}"/>

Возможно, вы также можете просто привязать к коллекции DataTable объектов и установить привязку для дочерней сетки данных ItemsSource к пути, подобному SelectedItem.ChildRelations[0].ChildTable, но тогда вы будете как-то облажаны где таблица имела несколько дочерних отношений, и вы не хотели использовать первый.

Кроме того, создание DataView s в вашем классе модели представления дает вам простой путь к реализации команд сортировки и фильтрации, когда придет время.

...