Из вашего комментария мне кажется, что вы, возможно, захотите сделать, выставив свойство Event
типа object
в вашей модели представления. Когда модель представления получает событие, она устанавливает Event
для объекта типа, подходящего для этого события. В вашем XAML у вас есть это:
<ContentControl Content="{Binding Event}"/>
и в словаре ресурсов определите DataTemplate
для каждого конкретного типа события, которое вы хотите отобразить. Если Event
равно нулю, ничего не отображается. Если Event
содержит объект, для которого вы определили DataTemplate
, он отображается с использованием этого шаблона.
Да, вам нужно создать класс для каждого типа события (если у вас его еще нет).
Другой способ - реализовать селектор шаблонов для бедняков:
<TextBlock Text="This is displayed if Foo contains 'BAR'">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Property="Foo" Value="BAR">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="This is displayed if Foo contains 'BAZ'">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Property="Foo" Value="BAZ">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Это немного глупо, но это простой способ обработки множества взаимоисключающих опций отображения.