У меня есть ContentPresenter с DataTemplateSelector:
...
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var model = item as ItemControlViewModel;
if (model.CurrentStatus == PrerequisitesStatus.Required)
{
return RequiredTemplate;
}
if (model.CurrentStatus == PrerequisitesStatus.Completed)
{
return FinishedTemplate;
}
...
return InProgressTemplate;
}
При изменении CurrentStatus вызывается OnPropertyChanged.
Мне нужно каким-то образом запустить этот DataTemplateSelector, когда свойство будет изменено и изменится ContentPresenter DataTemplate. Любые предложения?
Вот такие вопросы: 1 2, но я не хочу использовать DataTriggers из-за слишком большого количества состояний.
Пробовал играть с DataTriggers
<ContentPresenter
Grid.Column="1"
Height="16"
Width="16"
Margin="3">
<ContentPresenter.Triggers>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="0">
<Setter Property="ContentPresenter.ContentTemplate" Value="{StaticResource ResourceKey=_requiredStatusTemplate}" />
</DataTrigger>
</ContentPresenter.Triggers>
</ContentPresenter>
Но получилась ошибка: Элементы коллекции триггеров должны иметь тип EventTrigger: (