2009-04-21 20 views
6

Ho bisogno di modificare dinamicamente l'immagine di sfondo applicata a uno dei miei pulsanti, ma non riesco a capire come. Le immagini vengono aggiunte al progetto e la loro azione di compilazione è impostata su Risorsa. Ho provato la seguente:Utilizzo di un'immagine risorsa nel codice dietro

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

Questa compilato correttamente, ma andrà in crash con un DirectoryNotFoundException che dice "Impossibile trovare una parte del percorso 'C: \ Immagini \ InchDOWN.png'."

Non voglio che l'app cerchi l'immagine sul disco. Come posso utilizzare l'immagine come risorsa incorporata? Penso che implichi la modifica di Build Action to Embedded Resource, ma come faccio a utilizzare questa risorsa nel codice?

risposta

8

È necessario creare l'immagine come risorsa NON una risorsa incorporata. La risorsa è specificamente destinata ai progetti WPF.

di utilizzarlo in codice procedurale:

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

Questo è molto più facile da fare in XAML che consiglio.

Modifica

ho dimenticato una barra prima Images, che potrebbe essere il problema. Ecco un MSDN article about pack Uris se hai bisogno di maggiori informazioni.

Forse dovresti pubblicare una domanda che indica cosa esattamente stai cercando di ottenere e, auspicabilmente, scoprire approcci diversi al tuo problema con i pulsanti multistato.

+0

Ho provato questo e ottengo un NotSupportedException dicendo "Il prefisso URI non è riconosciuto." Sono d'accordo, l'impostazione dell'immagine sarebbe più semplice in XAML, ma il mio obiettivo è una sorta di pulsante multistato e non so come farlo in XAML. –

Problemi correlati