2010-07-22 3 views
0

Je suis en train de changer l'image d'arrière-plan défini par XAML cette façon:« chemin » pas une propriété valide pour Image.source

 <s:SurfaceWindow.Resources> 
    <ImageBrush x:Key="WindowBackground" 
Stretch="None" Opacity="0.6" ImageSource="pack://application:,,,/Resources/img/bg/Default.jpg"/> 
    </s:SurfaceWindow.Resources> 

en utilisant le code suivant dans une méthode:

 sessionWindow.SetValue(ImageBrush.ImageSourceProperty, "..//..//Resources//img//bg//Aqua.jpg"); 

où sessionWindow est la fenêtre réelle. Il lève l'exception dans le titre

+0

pourquoi utiliser la syntaxe uri pack en XAML, vous pouvez simplement omettre "" paquet: // application: ,,, » partie –

Répondre

1

Le ImageBrush.ImageSource property est de type ImageSource.

Par conséquent, vous devez le définir sur une instance ImageSource.
En outre, votre chemin est erroné.

Par exemple:

sessionWindow.SetValue(ImageBrush.ImageSourceProperty, 
    new BitmapImage(
     new Uri(@"..\..\Resources\img\bg\Aqua.jpg", UriKind.Relative) 
    ) 
); 

Cependant, cela ne changera pas réellement l'arrière-plan - Window n'a pas une propriété ImageSource.
Au lieu de cela, vous devez définir la propriété Background, comme la fenêtre de ceci:

sessionWindow.Background = new ImageBrush { 
    ImageSource = new BitmapImage(
     new Uri(@"..\..\Resources\img\bg\Aqua.jpg", UriKind.Relative) 
    ) 
}; 
+0

la remercie. Cela ne déclenche aucune exception maintenant, mais l'image de la fenêtre n'est pas en train d'être changée.Est-ce parce qu'il est également défini dans le code XAML? – user228137

+0

Vous le faites mal Vous devez définir la propriété 'Background'. – SLaks

Questions connexes