我的 MainPage 上有一个带有 WinUI2.4 NavigationView 的 UWP 应用程序。在导航视图的框架中放置了三个页面。第二个选项卡导航到一个带有 3 个按钮的页面,该按钮带有一个点击事件。
<Button Grid.Row="0" Grid.Column="0" x:Name="lightButton" x:Uid="LightOn" Click="ActivateLight"/>
<Button Grid.Row="0" Grid.Column="1" x:Name="countButton" x:Uid="ShowCount" Click="GetLightCounter"/>
<Button Grid.Row="0" Grid.Column="2" x:Name="resetButton" x:Uid="ResetCount" Click="ResetLightCounter"/>
他们执行异步操作。一切正常。除了现在我想在单击按钮时一起禁用 3 个按钮。只有在异步操作完成后,才应重新启用它们。
我在第二页上写了一个方法
private void Freeze()
{
lightButton.IsEnabled = false;
resetButton.IsEnabled = false;
countButton.IsEnabled = false;
}
以及随附的 Unfreeze 方法,该方法应将所有内容true
重新设置为。我在 Event-callbacks 的开头调用了 Freeze 方法,最后调用了 Unfreeze。
奇怪和意想不到的行为是,当我单击 3 个按钮中的任何一个时,现在 Freeze 方法可用,我的 NavigationView 导航到第一页。我不知道为什么。
我测试的。
- 评论冻结中的所有内容:
private void Freeze()
{
//lightButton.IsEnabled = false;
//resetButton.IsEnabled = false;
//countButton.IsEnabled = false;
}
然后它再次按预期工作,没有导航到第一页
- 在冻结中设置启用所有按钮
private void Freeze()
{
lightButton.IsEnabled = true;
resetButton.IsEnabled = true;
countButton.IsEnabled = true;
}
这当然没有意义,但一切都按预期再次运行 - 没有导航。
- 仅禁用 1 个按钮
private void Freeze()
{
lightButton.IsEnabled = false;
//resetButton.IsEnabled = false;
//countButton.IsEnabled = false;
}
一切都按预期工作。
- 扔掉 bin/ 和 obj/ 文件夹
问题仍然存在。所以它必须是我的代码中的错误。我不知道我应该去哪里找。有人知道我错过了什么吗?
编辑:重现该问题的完整应用程序在这里:https ://antamista.visualstudio.com/_git/TestAlbumControl?path= %2FTestAlbumControl%2FNavigationViewIsEnabled 包含自述文件。