使用绑定更改子视图

时间:2011-10-03 09:38:31

标签: c# wpf data-binding mvvm view

  

可能重复:
  Changing the View for a ViewModel

我有一个观点:

<UserControl ...>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ComboBox ItemSource="{Binding Items}" />
        **<???>**
    </Grid>
</UserControl>

我有ViewModel:

public class VM
{
    // ...
    public List<Entities> Items { get; set;}
    public String Title { get; set; }
}

我有几个子视图是这样的:

<UserControl ...>
    <TextBlock Text="{Binding Title}" />
</UserControl>

当用户从主视图中的ComboBox中选择一些值时,我需要放在第二列中 主要查看一些subViews。如果用户在ComboBox中选择了其他值,则另一个subView可以替换现有的subView

怎么做?

2 个答案:

答案 0 :(得分:1)

我通常只使用ContentControl让它根据DataTemplates确定要绘制的视图

<ContentControl Content="{Binding SelectedView}">
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type local:ViewModelA}">
            <local:ViewA />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:ViewModelB}">
            <local:ViewB />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:ViewModelC}">
            <local:ViewC />
        </DataTemplate>
    </ContentControl.Resources>
</ContentControl>

答案 1 :(得分:0)

您可以绑定到SelectedItem的{​​{1}},例如

ComboBox

如果你有不同的观点,请使用ContentTemplateSelector而不是硬编码一个模板。