如何根据当前的DataContext视图模型

时间:2017-01-08 18:18:53

标签: wpf xaml mvvm

我有一个Page,它会动态地收到不同的DataContext(查看模型)。

我无法弄清楚如何以DataTemplate方式使用switch/case,以根据当前上下文呈现相应的视图。

我想我会有多个这样的DataTemplates:

<DataTemplate DataType="{x:Type LocalViewModels:ABC}">
  <LocalViews:ABC/>
 </DataTemplate>

但无法弄清楚放入它们的容器。其中只有一个会一次呈现,所以ListBox对我来说毫无意义。

1 个答案:

答案 0 :(得分:1)

给出以下窗口的XAML

<Window.Resources>
    <DataTemplate DataType="{x:Type local:ABC}">
        <Border BorderThickness="2" BorderBrush="Red">
            <TextBlock Text="{Binding Text}"/>
        </Border>
    </DataTemplate>
</Window.Resources>
<StackPanel>
    <ContentControl Content="{Binding}"/>
</StackPanel>

您只需将ABC的实例分配给窗口的DataContext即可创建模板化视图。

class ABC
{
    public string Text { get; set; }
}

...
public MainWindow()
{
    InitializeComponent();

    DataContext = new ABC { Text = "Hello, World." };
}

所有详细信息均在此处:Data Templating Overview