У меня есть Page
, который будет получать другую DataContext
(модель просмотра) динамически.
Я не могу понять, как использовать DataTemplate
в стиле switch/case
, чтобы отобразить соответствующее представление на основе текущего контекста.
Я бы предположил, что у меня будет несколько таких шаблонов данных:
<DataTemplate DataType="{x:Type LocalViewModels:ABC}">
<LocalViews:ABC/>
</DataTemplate>
Но не могу понять, в какой контейнер их положить. Одновременно будет отображаться только один из них, поэтому ListBox
для меня не имеет смысла.
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." };
}
Все подробности здесь: Обзор шаблонов данных .
Похожие вопросы
Новые вопросы
wpf
Windows Presentation Foundation, или WPF, является подсистемой для визуализации пользовательских интерфейсов в приложениях на основе Windows.