2012-04-11 14 views
2

In meiner Windows Phone 7.1 App habe ich eine voll funktionsfähige ListBox, die Daten von einem Web-Service anzeigt. Im ListBox war ich in der Lage, ein Bild zu setzen und bindet die Bildquelle auf einen Wert von dem Webdienst zurückgegeben folgenden xaml mit:Windows Phone 7 - Bild Farbüberlagerung von URL

<Image Source="{Binding WebImageUrl}" Width="60" Height="60" /> 

Dies funktioniert gut. Aber jetzt versuche ich, das Bild mit einer anderen Farbe zu überlagern, und dazu befolge ich die SO Frage here. Dies funktioniert auch toll wenn das Bild explizit angegeben wird. Und es funktioniert nicht, wenn ich versuche, die URL zu binden.

Zum Beispiel der Code:

<Rectangle Fill="Red" Width="60" Height="60"> 
    <Rectangle.OpacityMask> 
    <ImageBrush ImageSource="http://someurl.com/repository/images/icon100.png"/> 
    </Rectangle.OpacityMask> 
</Rectangle> 

funktioniert. Aber der Code:

<Rectangle Fill="Red" Width="60" Height="60"> 
    <Rectangle.OpacityMask> 
    <ImageBrush ImageSource="{Binding WebImageUrl}"/> 
    </Rectangle.OpacityMask> 
</Rectangle> 

nicht. Der Code kompiliert die Datei, Visual Studio löst jedoch einen Analysefehler aus.

Gibt es eine Möglichkeit, ImageBrush.ImageSource an eine Zeichenfolge binden zu lassen ???

Alle Gedanken würden sehr geschätzt werden. Ich war eine Weile ohne Glück dabei.

Cheers, Brett

+0

Haben Sie Listbox mit mehreren Bildern auf dem tatsächlichen Telefon getestet? Binding URL direkt ist eine schlechte Idee mit vielen Bildern. Die Benutzeroberfläche friert zum Herunterladen der Daten ein. –

+0

@lukas: Ich habe es mit dem Herunterladen der Bilder arbeiten. Ich mache alles in einem Hintergrundthread und binde dann die Listbox nach Beendigung der Downloads. Die hartcodierte URL ist nur ein Beispiel, von dem ich weiß, dass es funktioniert. Meine Frage betrifft wirklich die Farbüberlagerung. Warum funktioniert eine fest codierte URL, aber eine Bindung nicht? – Brett

Antwort

1

- Entfernt -

Ihr Original-Code scheint mit einer String-Eigenschaft zu mir, adaequat zu sein, so dass ich sehe keine Frage ...

+0

Das sieht einfach genug aus, aber ich bekomme den Fehler: Ein Wert vom Typ 'ImageBrush' kann nicht zu einer Sammlung oder einem Wörterbuch vom Typ 'UIElementCollection' hinzugefügt werden. Irgendwelche Ideen? – Brett

+0

Ops, es ist nicht ImageBrush, es ist Image ... es jetzt zu reparieren! –

+0

Nun, es funktioniert :-) Es ist nicht wirklich, was ich wollte. Mein ursprünglicher Code (mit dem hartcodierten URI) überlagert nur die nicht transparenten Bereiche des Bildes mit einer Volltonfarbe. Das ist, was ich anstrebe. Ihr Beispiel (obwohl einfach) überlagert das gesamte Quadrat mit einer Deckkraft von 0,5. Ich weiß es zu schätzen, dass du dir die Zeit genommen hast! – Brett