Привязка treeview и datagrid к набору данных с моделью MVVM - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь привязать к набору данных как 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 синхронизировать данные?

...