如果我将以下代码放在骨架WinRT应用程序中,它将不会构建主页:
<Page
x:Class="TestApp1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestApp1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="Blue">
<Page.Resources>
<ListPickerFlyout x:Key="btnfly"/>
</Page.Resources>
<Grid>
</Grid>
</Page>
错误是:
An exception of type 'Windows.UI.Xaml.Markup.XamlParseException' occurred in TestApp1.WindowsPhone.exe but was not handled in user code
WinRT information: Cannot create instance of type '%0' [Line: 12 Position: 42]
将背景标记更改回{ThemeResource ApplicationPageBackgroundThemeBrush}
可解决问题。
我有什么想法可以更改页面的背景颜色并仍使用ListPickerFlyout吗?
答案 0 :(得分:0)
简单的解决方案是在构造函数中设置背景颜色,在调用InitializeComponent
后:
public MainPage()
{
this.InitializeComponent();
// Or the colour of your choice...
Background = new SolidColorBrush(Windows.UI.Colors.Blue);
this.NavigationCacheMode = NavigationCacheMode.Required;
}
有趣的问题是“为什么?” - 我猜是因为ListPickerFlyout
实际上不是UIElement
,在初始化过程中会发生一些奇怪的交互。
答案 1 :(得分:0)
是的,“为什么”是一个有趣的问题,彼得的答案很好。
我还从另一个StackOverflow问题中找到了另一个答案。
首先,通过将以下内容添加到App.xaml来覆盖FlyoutBackgroundThemeBrush:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="FlyoutBackgroundThemeBrush" Color="Blue" />
</ResourceDictionary>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="FlyoutBackgroundThemeBrush" Color="Blue" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Application.Resources>
然后将页面背景更改为Background="{ThemeResource FlyoutBackgroundThemeBrush}"