Я пытаюсь привязать к набору данных как treeview, так и datagrid. Я хотел бы, чтобы при изменении treeviewitem (переименование, добавление, удаление), datagrid и обновление набора данных тоже. При изменении сетки данных (добавление строки, удаление строки, переименование), древовидное представление и обновление набора данных также.
Я могу легко применить его обычным способом
для сетки данных
.cs
public DataView DataView
{
get { return _dataView; }
set { _dataView = value; OnPropertyChanged("DataView"); }
}
DataView dv = MainWindow.ds.Tables["Project"].AsDataView();
dv.RowFilter = "ProjectName <> ''";
_dataView = dv;
.xaml
<DataGrid Name="dataGridView1" AutoGenerateColumns="False" ItemsSource="{Binding Path=DataView , Mode=TwoWay}">
<DataGrid.Columns >
<DataGridTextColumn Header="Project Name" Binding="{Binding ProjectName}"/>
</DataGrid.Columns>
</DataGrid>
Treeview
.cs
ds.Relations.Add("Parents", t.Columns["ProjectID"], t.Columns["ParentID"], false);
Root = new DataView(t);
Root.RowFilter = "[ParentID]<0";
public DataView Root { get; private set; }
.xaml
<TreeView Name="tv" ItemsSource="{Binding Root}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Parents}">
<TextBlock Text="{Binding ProjectName}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Теперь, работает нормально. дерево привязки <-> datagrid <-> создается. Если один из них изменится, другой также изменится
Но если мне это нравится, я не могу применить MVVVM Jo sh smith для использования IsSelected, IsExpand, потому что теперь MVVM находится в system.DataViewRow. Если я попытаюсь применить MVVM Jo sh smith к treeview, связь между treeview и набором данных будет нарушена, потому что treeview не использует напрямую набор данных, а использует модель представления набора данных. При изменении элемента treeview (очевидно, gui update) набор данных и datagrid не изменяются
Как заставить MVVM привязать treeview, dataset и datagrid синхронизировать данные?