我有一个Page
,它会动态地收到不同的DataContext
(查看模型)。
我无法弄清楚如何以DataTemplate
方式使用switch/case
,以根据当前上下文呈现相应的视图。
我想我会有多个这样的DataTemplates:
<DataTemplate DataType="{x:Type LocalViewModels:ABC}">
<LocalViews:ABC/>
</DataTemplate>
但无法弄清楚放入它们的容器。其中只有一个会一次呈现,所以ListBox
对我来说毫无意义。
答案 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。