0

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

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

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

应用程序.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具有 Build Action Content

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

主页.xaml

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

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

有人知道我在搞砸什么吗?;)

4

2 回答 2

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;
}
于 2012-07-19T20:12:09.550 回答
-1

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

将此与绑定到转换器的背景结合起来(将状态转换为ImageBrush),您就有了解决方案。

于 2012-07-19T20:04:58.947 回答