2009-04-21 2 views
6

Ich muss das Hintergrundbild dynamisch ändern, das auf einen meiner Knöpfe angewendet wird, aber kann nicht herausfinden, wie. Die Bilder werden dem Projekt hinzugefügt und ihre Build-Aktion wird auf Ressource festgelegt. Ich habe die Folge versucht:Verwenden eines Ressourcenbilds in Code hinter

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("/Images/InchDOWN.png",UriKind.Relative))); 

Diese erfolgreich kompiliert, aber stürzt mit einem DirectoryNotFoundException sagen: „Es konnte kein Teil des Weges finden‚C: \ Images \ InchDOWN.png‘.“

Ich möchte nicht, dass die App nach dem Image auf der Festplatte sucht. Wie kann ich das Bild als eingebettete Ressource verwenden? Ich würde denken, dass es die Build-Aktion in die eingebettete Ressource ändert, aber wie verwende ich diese Ressource im Code dahinter?

Antwort

8

Sie müssen das Bild als eine Ressource NICHT eine eingebettete Ressource erstellen. Die Ressource wird speziell für WPF-Projekte verwendet.

Um es in prozeduralen Code zu verwenden:

buttonUnits.Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/InchDOWN.png"))); 

Dies ist viel einfacher, in XAML zu tun, was ich empfehlen.

bearbeiten

vergaß ich einen Schrägstrich vor Bilder, die das Problem sein könnte. Hier ist ein MSDN article about pack Uris, wenn Sie weitere Informationen benötigen.

Vielleicht sollten Sie eine Frage stellen, die genau angibt, was Sie zu erreichen versuchen und hoffentlich verschiedene Ansätze für Ihr Multi-State-Button-Problem entdecken.

+0

Ich habe dies versucht und ich bekomme eine NotSupportedException sagen "Das URI-Präfix wird nicht erkannt." Ich stimme zu, Einstellung des Bildes wäre einfacher in XAML, aber mein Ziel ist eine Art Multi-State-Taste und weiß nicht, wie man das in XAML tun. –