Ответ 1
Как вы запросили пример с datatriggers в комментариях, вот вы:
Элемент FrameworkElement может иметь только EventTriggers, поэтому вы получаете сообщение об ошибке. Элементы коллекции Triggers сообщения должны иметь тип EventTrigger
И также не используйте ContentPresenter напрямую, он предназначен для использования внутри ControlTemplate. Лучше использовать ContentControl, если вы хотите иметь динамический контент. См. В чем разница между ContentControl и ContentPresenter?
И, наконец, вот предложение к вашей проблеме DataTrigger. Я положил его в стиле для повторного использования....
XAML:
<Window x:Class="WpfApplication88.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate x:Key="requiredTemplate">
<TextBlock Text="requiredTemplate"></TextBlock>
<!--your stuff here-->
</DataTemplate>
<DataTemplate x:Key="completedTemplate">
<TextBlock Text="CompletedTemplate"></TextBlock>
<!--your stuff here-->
</DataTemplate>
<Style x:Key="selectableContentStyle" TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="Required">
<Setter Property="ContentTemplate" Value="{StaticResource requiredTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="Completed">
<Setter Property="ContentTemplate" Value="{StaticResource completedTemplate}" />
</DataTrigger>
<!-- your other Status' here -->
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ContentControl Width="100" Height="100" Style="{StaticResource selectableContentStyle}"/>
</Grid>
</Window>