DataTrigger-Verwendung
Hier ist Pseudocode für das, was ich in xaml implementieren möchte
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
und unten ist ein Implementierungsversuch mit mindestens den folgenden Problemen:
Woher weiß es, dass der AvatarPath null ist und dass uns das Geschlecht am Herzen liegt?Gibt es eine Möglichkeit, ELSE auszuführen, sodass ich die Gender.Male-Ressource nur einmal anstelle von jeweils einmal für angeben kann?Wie kann ich das richtig umsetzen?
Prost,
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>
aktualisierenWie Trimeyko darauf hinweist, ist dieskönnte Dies kann entweder mit einem Multikonverter oder innerhalb eines Ansichtsmodells erfolgen.
Zu meiner Antwort zurück: "Ich habe den Multikonverter-Ansatz zuerst mit bescheidenem Erfolg ausprobiert und beinahe veröffentlicht, um die Bereinigung zu erleichtern. Dann habe ich entschieden, dass Konverter am besten für die eigentliche Konvertierung von Typen geeignet sind. Einigermaßen ist der Ansichtsmodell-Ansatz wahrscheinlich am einfachsten Aber dies scheint eher die Aufgabe der Ansicht zu sein, und ich würde gerne sehen, ob ich es zuerst schaffen kann, es als solches zum Laufen zu bringen. "
Ich habe versucht, [dies mit einem mutliConveter-Posting hier zu lösen] (MultiConverter Nutzung)