我在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 (更改后的主题)在我们解除弹出窗口后仍然存在,您将不得不重新加载页面)。它看起来或多或少与下图中的相似:
有人知道会导致什么问题吗?任何解决方法?
如果有人想尝试 - here is a sample code。
答案 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;
}
}