Wykorzystanie DataTrigger

Oto pseudo kod tego, co chcę zaimplementować w 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

i poniżej jest próbą wdrożenia z przynajmniej następującymi kwestiami:

skąd wiadomo, że ścieżka AvatarPath była null i że zależy nam na płci?czy istnieje sposób, aby zrobić ELSE, więc mogę określić zasób Gender.Male tylko raz zamiast raz dla każdego

Jak mogę to prawidłowo wdrożyć?

Twoje zdrowie,
Berryl

próba xaml 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>
aktualizacja

Jak wskazuje trimeyko, tomógłby można to zrobić za pomocą multikonwertera lub wewnątrz modelu widoku.

Odpowiadając na moje pytanie: „Początkowo wypróbowałem podejście multiconverter, ze skromnym sukcesem, i prawie opublikowałem to, aby pomóc w jego czyszczeniu. Wtedy zdecydowałem, że konwertery najlepiej pozostawić do rzeczywistej konwersji typów. Uzgodnione podejście do modelu widoku jest prawdopodobnie najłatwiejsze ale wydaje się, że to raczej zadanie widoku, i chciałbym sprawdzić, czy mogę go najpierw uruchomić. ”

Podjąłem próbę [rozwiązania tego z zamieszczeniem tutaj mutliConveter] (Wykorzystanie MultiConvertera)

questionAnswers(2)

yourAnswerToTheQuestion