我是WPF MVVM的新手,有点卡住了。我需要使用带有wpf的MVVM在同一视图上切换大约100个不同的表。 我有Treeview的表名列表和项目选择,必须在Treeview旁边显示正确的DataGrid。 我为每个表创建了Model和ViewModel类。但是,如何根据选择选择要绑定的正确Viewmodel。
答案 0 :(得分:0)
如果我理解你的问题 - 那么你就会遇到设计问题。
首先获取SelectedItem
TreeView
要在TreeView上使用SelectedItem
- Binding
,请参阅this。但你可以在后面的代码中做坏事。
第二次绑定您的SelectedItem
所以你想要做的是:
将SelectedItem
绑定在ContentControl
或ContentPresenter
之类的内容上。或者在背后的代码中做坏事。
例如:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TreeView ItemsSource="{Binding MyItemSource}">
<!-- Get the selected item here (watch how to in the linked answer) -->
</TreeView>
<ContentPresenter Grid.Column="1"
Content="{Binding Path=SelectedItem}"
>
<ContentPresenter.ContentTemplate>
<DataTemplate>
<DataGrid>
<!-- Your DatGrids or what ever -->
</DataGrid>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</Grid>
第三(可选)如果您有不同的DataGrids
您也可以使用DataTemplateSelector来更改您的视图,具体取决于您的SelectedItem。您可以在此示例中的ContentPresenter
上使用它。