2009-04-11 7 views
0

Hoffentlich habe ich die Frage richtig formuliert. Wenn nicht, lass es mich erklären. Ich möchte die Source-Eigenschaft eines Image-Elements an die ImageUrl-Eigenschaft meines DataContext-Objekts binden. Hier ist die XAML:Kann ich einem Silverlight-Element eine Bindungsregel hinzufügen?

<Image 
    x:Name="EmployeeImage" 
    Grid.Column="0" 
    Grid.Row="0" 
    Grid.RowSpan="2" 
    Source="{Binding Path=ImageUrl}" 
    Stretch="UniformToFill"> 
</Image> 

Natürlich kann ich nur das ausführen in verbindliche Code-Behind und führen dort die Überprüfungen, aber gibt es eine Möglichkeit, um deklarativ eine alternative URL für die Bildquelle zur Verfügung stellen, wenn die ImageUrl Eigenschaft null ist oder leer?

Bearbeiten: Ich habe einen Konverter hinzugefügt, der das ImageUrl überprüft und einen Standardpfad zurückgibt, wenn es null oder leer ist. Wenn es einen anderen Weg gibt, interessiert mich das zu hören.

Vielen Dank!

Antwort

1

Es gibt einen Weg Sie es deklarativ tun können, aber Sie werden eine Klasse schreiben müssen, die von IValueConverter ersten ableitet. Sobald Sie das getan haben, können Sie diese Klasse verwenden, um alle Prüfungen durchzuführen, die aufgerufen werden, wenn die Pfadbindung aktiviert ist.

XAML Beispiel:

<Image Source="{Binding Path=ImageUrl, Converter={StaticResource YourImagePathConverter}}"/> 
+0

Dies ist die Route, mit der ich ging. Danke für den Vorschlag! –

1

Warum haben Sie nicht nur das Objekt, das Sie binden, damit umzugehen?

public string ImageURL 
{ 
    get { return (_ImageURL != string.Empty) ? _ImageURL : _MyDefaultImageURL; } 
} 
+0

Ich bin an eine Klasse gebunden, die automatisch aus einer Servicereferenz generiert wird. Ich denke, ich könnte eine passende Teilklasse erzeugen, die eine neue Eigenschaft freilegt, die diese Funktionalität erfüllt, z. Öffentliche Zeichenkette ValidatedImageUrl {...}. Danke für den Vorschlag! –

Verwandte Themen