使用wpf mvvm在同一视图上的视图模型之间切换

时间:2017-03-08 02:36:40

标签: c# wpf xaml mvvm

我是WPF MVVM的新手,有点卡住了。我需要使用带有wpf的MVVM在同一视图上切换大约100个不同的表。 我有Treeview的表名列表和项目选择,必须在Treeview旁边显示正确的DataGrid。 我为每个表创建了Model和ViewModel类。但是,如何根据选择选择要绑定的正确Viewmodel。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题 - 那么你就会遇到设计问题。

首先获取SelectedItem

TreeView

要在TreeView上使用SelectedItem - Binding,请参阅this。但你可以在后面的代码中做坏事。

第二次绑定您的SelectedItem

所以你想要做的是: 将SelectedItem绑定在ContentControlContentPresenter之类的内容上。或者在背后的代码中做坏事。

例如:

<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上使用它。