Frage

In meiner M-V-VM-Anwendung muß ich den Avatar des Benutzers zeigen. Das Bild wird in eine Eigenschaft des Typs Image das Objekt Ansichtsmodell zur Verfügung gestellt. Also das ist, was habe ich zur Zeit:

<Image Source="{Binding Path=UserAvatar}"/>

Jedoch können einige Benutzer nicht haben ein Avatar konfiguriert, so useravatar null ist. In diesem Fall möchte ich ein Standardbild zeigen. Noone, aber die Aussicht muss über das Standardbild kennen, weil es nur ein Anliegen der Präsentation ist.

Wie kann ich also entweder das Bild mit dem angegebenen Image zeigen, oder einer bestimmten Ressource, wenn Image null ist. Muss ich irgendeine Art von Datatemplate mit DataTriggers bedienen? Da jetzt habe ich sie nur für ItemsControls, so weiß ich nicht.

War es hilfreich?

Lösung

Wie Sie richtig erraten, Vorlagen und Auslöser sind in der Tat Ihr Freund hier.

Hier ist eine Implementierung mit der ContentControl:

<ContentControl Content="{Binding Path=UserAvatar}">
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <Image x:Name="image" Source="{Binding}"/>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding}" Value="{x:Null}">
                    <Setter TargetName="image" Property="Source" Value="--your awesome default image here--" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

Und in der Situation, wenn Ihr Standard-Dingen nicht ImageSource ist, und Sie wünschen, um ein wenig mit anderen Steuerungen zu spielen, können Sie sich immer auf die Visibilty Eigenschaft zurückgreifen:

<ContentControl Content="{Binding Path=UserAvatar}">
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <Grid>
                <Image x:Name="image" Source="{Binding}" />
                <Canvas x:Name="defaultImage" Visibility="Collapsed" />
            </Grid>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding}" Value="{x:Null}">
                    <Setter TargetName="image" Property="Visibility" Value="Collapsed" />
                    <Setter TargetName="defaultImage" Property="Visibility" Value="Visible" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

Hope, das hilft ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top