2013-09-04 15 views
8

Ho questo ResourceDictionary in Main.xaml:Come impostare l'origine dell'immagine in C# a Xatic risorsa statica programmaticamente?

<Window.Resources> 
    <ResourceDictionary> 
     <BitmapImage x:Key="Customer" UriSource="Icons/customer.png"/> 
     <BitmapImage x:Key="Project" UriSource="Icons/project.png"/> 
     <BitmapImage x:Key="Task" UriSource="Icons/task.png"/> 
    </ResourceDictionary> 
</Window.Resources> 

inizialmente ho impostato l'immagine utilizzando:

<Image Name="TypeIcon" HorizontalAlignment="Left" VerticalAlignment="Center" 
    Source="{StaticResource Customer}" Height="16" Width="16"/> 

Sto cercando di cambiare TypeIcon s' Source da clienti-Progetto in un Metodo C#.

Ho provato con:

TypeIcon.Source = "{StaticResource Project}"; 

ma ottengo questo errore:

Cannot implicitly convert type string to System.Windows.Media.ImageSource

Ho provato definire l'immagine utilizzando new ImageSource(), ma questo non funziona neanche.

Come posso modificare l'immagine Source a livello di codice in C#?

risposta

14

Dopo molte Googling, mentre la scrittura a questa domanda, ho capito come si fa:

TypeIcon.Source = (ImageSource) Resources["Project"]; 
2

È possibile utilizzare la classe ImageSourceConverter per ottenere ciò che si vuole, ad esempio:

img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png"); 
+1

Lo spazio dei nomi 'Media' non è disponibile per le applicazioni universali' System.Windows.Media.ImageSourceConverter' –

9

Non è per le risorse statiche ma forse sarà comunque utile ... :)

ie come impostare lo sfondo per Grid dinamicamente

var myBrush = new ImageBrush(); 
      var image = new Image 
          { 
           Source = new BitmapImage(
            new Uri(
             "pack://application:,,,/YourAppName;component/Images/Boo.png")) 
          }; 
myBrush.ImageSource = image.Source; 
MainGrid.Background = myBrush; 

cioè come impostare l'icona della app in modo dinamico

var idleIco = new Image 
      { 
       Source = new BitmapImage(
        new Uri(
         "pack://application:,,,/YourAppName;component/Images/idle.ico")) 
      }; 
SomeObjectYouAreUsingToSet.IconSource =idleIco.Source;