views:

37

answers:

1

I'm trying to change the background image set by xaml this way:

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

by using the following code in a method:

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

where sessionWindow is the the actual window. It throws the exception in the title

+1  A: 

The ImageBrush.ImageSource property is of type ImageSource.

Therefore, you need to set it to an ImageSource instance.
Also, your path is wrong.

For example:

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

However, this won't actually change the background - Window doesn't have an ImageSource property.
Instead, you should set the Window's Background property, like this:

sessionWindow.Background = new ImageBrush {
     ImageSource = new BitmapImage(
        new Uri(@"..\..\Resources\img\bg\Aqua.jpg", UriKind.Relative)
     )
};
SLaks
thanks. it doesn't throw any exceptions now, but the window image is not being changed. Could it be because it's also set in the XAML ?
bsuv
You're doing it wrong. You should set the `Background` property.
SLaks