Windows Phone 应用背景图像
本文关键字:图像 背景 应用 Phone Windows | 更新日期: 2023-09-27 18:30:27
我正在尝试更改 app.xaml 中所有 xaml 页面的背景图像,但没有成功。
我正在应用程序构造函数中尝试以下内容:
var imageBrush = new ImageBrush
{
ImageSource = new BitmapImage(new Uri("/Images/SomeBackgroundImage.png", UriKind.Relative))
};
RootFrame.Background = imageBrush;
我不想在页面级别执行此操作,因为根据用户选择的主题,所有页面都将具有相同的背景图像。
关于我在这里做错了什么的想法?
我最终做了什么:
我创建了一个方法,该方法根据所选主题选择正确的背景图像。
public static ImageBrush GetBackground()
{
var imageBrush = new ImageBrush();
if ((Visibility)App.Current.Resources["PhoneLightThemeVisibility"] == Visibility.Visible)
{
imageBrush = new ImageBrush
{
ImageSource = new BitmapImage(new Uri("/Images/Background1.png", UriKind.Relative))
};
}
else
{
imageBrush = new ImageBrush
{
ImageSource = new BitmapImage(new Uri("/Images/Background2.png", UriKind.Relative))
};
}
return imageBrush;
}
在每一页中,我都设置了背景图像。
LayoutRoot.Background = Utils.GetBackground();
虽然你的代码片段也对我不起作用,但使用
RootFrame.Background = App.Current.Resources["MainBackground"] as ImageBrush;
确实如此。您需要在 App.xaml
中将以下内容添加到资源字典中
<ImageBrush x:Key="MainBackground" ImageSource="/resources/MainBackground.jpg" />
我使用自定义样式使框架背景为白色:
<ControlTemplate x:Key="WhiteTemplate" TargetType="toolkit:TransitionFrame">
<Grid x:Name="ClientArea">
<Grid.Background>
<ImageBrush ImageSource="Images/yourimage.png"
</Grid.Background>
<ContentPresenter x:Name="FirstContentPresenter" />
<ContentPresenter x:Name="SecondContentPresenter" />
</Grid>
</ControlTemplate>
然后,在 App.xaml 中.cs
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
{
// Set the root visual to allow the application to render
if (RootVisual != RootFrame)
RootVisual = RootFrame;
// Remove this handler since it is no longer needed
RootFrame.Navigated -= CompleteInitializePhoneApplication;
// Add this to inject the media element Control template
RootFrame.Template = Current.Resources["WhiteTemplate"] as ControlTemplate;
}
请注意,这是使用工具包。如果你不使用它,你可能应该使用"PhoneApplicationFrame"而不是工具包:TransitionFrame