Использование DataTrigger

Вот псевдокод для того, что я хочу реализовать в 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

и ниже - попытка реализации, по крайней мере, со следующими проблемами:

how does it know the AvatarPath was null and that we care about Gender? is there a way to do ELSE, so I can specify the Gender.Male resource only once instead of once each for

Как я могу реализовать это правильно?

Ура,
Berryl

xaml attempt 1
<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>
update

Как указывает тримейко, этоcould быть сделано или с мультиконвертером или внутри модели представления.

В ответ на мой ответ: «Сначала я попробовал подход с несколькими конвертерами, но с небольшим успехом, и почти опубликовал это, чтобы помочь его очистить. Затем я решил, что конвертеры лучше всего использовать для преобразования типов. Согласованный подход модели представления является, вероятно, самым простым, но это, похоже, больше работа представления, и я хотел бы посмотреть, смогу ли я сначала заставить его работать таким образом ».

Я попытался [решить эту проблему с помощью MutliConveter, опубликовавшего здесь] (Использование мультиконвертера)

Ответы на вопрос(2)

Ваш ответ на вопрос