que tienen ContentPresenter con DataTemplateSelector:Cómo activar DataTemplateSelector cuando la propiedad cambia?
...
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;
}
Cuando se cambia CurrentStatus, OnPropertyChanged se llama.
Necesito de alguna manera activar este DataTemplateSelector cuando se cambie la propiedad y cambie ContentPresenter DataTemplate. ¿Alguna sugerencia?
threre son preguntas similares: 1 2, pero no quiero utilizar cualquier DataTriggers, debido al exceso de estados.
tratado de jugar con 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>
Pero tiene un error: desencadenantes miembros de la colección debe ser de tipo EventTrigger :(
@ apt0r Ha considerado el uso VisualStateManager a diferencia de plantillas? –
No, creo que no es adecuado aquí. Necesito cambiar la plantilla, no una propiedad. – rapt0r
Tuve el mismo problema en el pasado y cambié a DataTriggers para que funcione, no creo que haya una mejor solución para esto ... – SvenG