2015-02-07 2 views
1

Если я ставлю следующий код в скелет WinRT приложения, это не построишь главную страницу:WinRT ListPickerFlyout сбой приложения, если цвет фона изменен

<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

Простое решение, чтобы установить цвет фона внутри конструктора, после призыв к InitializeComponent:

public MainPage() 
{ 
    this.InitializeComponent(); 

    // Or the colour of your choice... 
    Background = new SolidColorBrush(Windows.UI.Colors.Blue); 

    this.NavigationCacheMode = NavigationCacheMode.Required; 
} 

Интересный вопрос: «почему?» - Я предполагаю, что, поскольку ListPickerFlyout на самом деле не является UIElement, во время инициализации происходит что-то странное.

0

Да, «почему» - интересный вопрос, и ответ Петра хорош.

Я также нашел другой ответ из другого вопроса StackOverflow.

Во-первых, переопределить FlyoutBackgroundThemeBrush, добавив следующее App.xaml:

<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}"

Смежные вопросы