WP7 - 在所有页面上设置背景图像

时间:2012-07-19 18:00:27

标签: c# windows-phone-7 xaml

我的目标是为每个页面设置背景图片。 考虑一下这个结构...

/Images/AppBackground.jpg
/App.xaml
/MainPage.xaml
/Page2.xaml

我的第一次尝试是按照本网站其他地方的建议在根框架上设置...;)

App.xaml.cs

ImageBrush brush = new ImageBrush
{
    ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Images/AppBackground.jpg", UriKind.Relative)),
    Opacity = 0.5d
};
this.RootFrame.Background = brush;

这会给我一个错误: A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll

我尝试使用和不使用起始/,尝试UriKind.Absolute,并且没有UriType参数,所有人都会给我同样的错误。图片AppBackground.jpg具有构建操作Content

下面的代码可以正常工作。

MainPage.xaml中

<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <ImageBrush ImageSource="/Images/AppBackground.jpg"></ImageBrush>
    </Grid.Background>
    ...

但这不是我想要的,我不想为每个页面设置它......

任何人都知道我搞砸了什么? ;)

2 个答案:

答案 0 :(得分:1)

垃圾。错误的地方;我很早。在构造函数中,它将简单地覆盖Background设置...

如果我稍后执行它,它会正常工作......:)

// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
    ImageBrush brush = new ImageBrush
    {
        ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Images/AppBackground.jpg", UriKind.Relative)),
        Opacity = 0.5d
    };
    this.RootFrame.Background = brush;
}

答案 1 :(得分:-1)

在XAML中分别为每个页面设置背景有什么问题?如果背景应该是动态的,你可以实现一个状态标志,它将告诉应用程序它处于什么状态,因此知道要加载什么样的墙纸。

将此与绑定到转换器的背景(将状态转换为ImageBrush)相结合,您就可以找到解决方案。