弹出窗口改变了Page的主题

时间:2014-08-27 14:17:48

标签: c# windows-runtime windows-phone-8.1

我在WP8.1上遇到的问题很少 - 花了一些时间,但最后我设法将其本地化了 - 假设我们有一个弹出按钮:

<Grid x:Name="LayoutRoot">
    <Button Content="reset" VerticalAlignment="Center">
        <Button.Flyout>
            <MenuFlyout Placement="Top">
                <MenuFlyoutItem Text="first item"/>
                <MenuFlyoutItem Text="second item"/>
            </MenuFlyout>
        </Button.Flyout>
    </Button>
</Grid>

它工作正常,但如果我们设置页面的DataContext

public MainPage()
{
    this.InitializeComponent();
    this.DataContext = this; // without this works fine every button click
}

然后有一个问题 - 我们第一次点击我们的按钮 - 工作正常,但是当我们第二次点击它时,随着弹出窗口,页面的主题变为 Light (更改后的主题)在我们解除弹出窗口后仍然存在,您将不得不重新加载页面)。它看起来或多或少与下图中的相似:

enter image description here enter image description here

有人知道会导致什么问题吗?任何解决方法?

如果有人想尝试 - here is a sample code

1 个答案:

答案 0 :(得分:2)

我不知道它为什么会发生,但是你可以在页面加载时强制页面的RequestedTheme:

XAML

<Page
...
x:Name="myPage">

C#

public MainPage()
{
    this.InitializeComponent();
    this.DataContext = this;

    if (App.Current.RequestedTheme == ApplicationTheme.Dark)
    {
        myPage.RequestedTheme = ElementTheme.Dark;
    }
    else
    {
        myPage.RequestedTheme = ElementTheme.Light;
    }
}