我的目标是为每个页面设置背景图片。 考虑一下这个结构...
/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>
...
但这不是我想要的,我不想为每个页面设置它......
任何人都知道我搞砸了什么? ;)
答案 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
)相结合,您就可以找到解决方案。