Uso de DataTrigger
Aquí está el pseudo código para lo que quiero implementar en xaml
IF vm.AvatarFilePath IS NOT NULL THEN
Image.Source = {Binding AvatarPath}
ELSE
If vm.Gender == {x:Static vm:Gender.Female} THEN
Image.Source = {StaticResource Img_Female}
ELSE
Image.Source = {StaticResource Img_Male}
ENDIF
ENDIF
A continuación se muestra un intento de implementación con al menos los siguientes problemas:
¿Cómo sabe que el AvatarPath fue nulo y que nos importa el género?¿hay una manera de hacer ELSE, por lo que puedo especificar el recurso Gender.Male solo una vez en lugar de una vez para cada uno?¿Cómo puedo implementar esto correctamente?
Aclamaciones,
Berryl
<DataTemplate x:Key="AvatarPathTemplate">
<Image x:Name="avatarImage" Source="{Binding AvatarPath}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Gender}" Value="{x:Static vm:Gender.Female}">
<Setter Property="Sourrce" Value="{resx:Resx Img_Female}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Gender}" Value="{x:Static vm:Gender.Male}">
<Setter Property="Sourrce" Value="{resx:Resx Img_Male}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Gender}" Value="{x:Static vm:Gender.Unknown}">
<Setter Property="Sourrce" Value="{resx:Resx Img_Male}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Gender}" Value="{x:Static vm:Gender.Unspecified}">
<Setter Property="Sourrce" Value="{resx:Resx Img_Male}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
actualizarComo señala trimeyko, estepodría Se puede hacer con un multiconvertidor o dentro de un modelo de vista.
Según mi respuesta, "al principio, probé el enfoque del convertidor múltiple, con un éxito modesto, y casi lo publiqué para ayudar a limpiarlo. Luego, decidí que es mejor dejar a los convertidores para convertir los tipos en realidad. pero esto parece ser más el trabajo de la vista, y me gustaría ver si puedo hacer que funcione como tal primero ".
Hice mi intento de [resolver esto con una publicación mutliConveter aquí] (Uso de múltiples conversores)