首页 > 解决方案 > UWP MultipleView 示例菜单疯狂

问题描述

我有一个基于 Microsoft MultipleView 示例实现辅助视图的应用程序。它使用 NuGet 包 Microsoft.UI.XAML 提供的菜单栏,我注意到一个非常奇怪的事情,如果您从辅助视图显示主视图,但只有当您使用关闭主视图时,菜单才会停止工作事先 X。

我想确保我没有做任何太愚蠢的事情,所以我从 GitHub 重新下载了 MultipleView 示例,然后执行以下操作来实现菜单栏

1) 在管理 NuGet 包中,我将 Microsoft .netCore 更新到 v6.2.10

2) 我浏览了 Microsoft.UI.XAML 并安装它 (v2.4.2)

3)在app.aml之后

<ResourceDictionary Source="/Styles/Styles.xaml"/>

添加

<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />

4) 在 mainpage.xaml

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

添加

xmlns:Custom="using:Microsoft.UI.Xaml.Controls"

5) 在 mainpage.xaml 之后

    <TextBlock x:Name="Header" Text="Universal Windows Platform sample" Style="{StaticResource TagLineTextStyle}" Margin="0,15,0,0" />

添加

<Custom:MenuBar x:Name="theMenuBar">
                <Custom:MenuBarItem x:Name="TestMenu1" Title="TestA">
                    <MenuFlyoutItem Text="TestA Item" Click="TestA_Click"></MenuFlyoutItem>
                </Custom:MenuBarItem >
                <Custom:MenuBarItem x:Name="TestMenu2" Title="TestB">
                    <MenuFlyoutItem Text="TestB Item" Click="TestB_Click"></MenuFlyoutItem>
                </Custom:MenuBarItem >
                <Custom:MenuBarItem x:Name="TestMenu3" Title="TestC">
                    <MenuFlyoutItem Text="TestC Item" Click="TestC_Click"></MenuFlyoutItem>
                </Custom:MenuBarItem >
            </Custom:MenuBar>

6)在 MainPage.xaml.cs 添加

private void TestA_Click(object sender, RoutedEventArgs e)
{

}
private void TestB_Click(object sender, RoutedEventArgs e)
{

}
private void TestC_Click(object sender, RoutedEventArgs e)
{

}

现在构建并运行(我在使用 X64 本地的 Windows 10 笔记本电脑上运行)

如果您执行上述操作,您应该会在通用 Windows 平台示例文本块之后的顶部看到三个菜单项,如果您单击菜单,菜单中的项目将出现

单击“创建新视图”,然后在“打开视图”中选择它,然后单击“将所选视图显示为独立视图”。

返回主页面,单击 X 关闭主窗口。辅助窗口现在将位于最顶部,并在辅助窗口中单击“切换到主视图”。这将用主页面替换辅助框架的内容

您可能需要重复该过程(单击创建新视图,选择它,单击“将所选视图显示为独立视图。返回主视图,用 X 关闭,然后单击“切换到主视图”

现在尝试操作菜单项。

我发现它们根本不起作用。单击它们不会像以前那样飞出该项目。

真正奇怪的是,有时我发现这三个菜单中的一些会在第一次关闭/“切换到主视图”迭代后停止工作,而其他时候需要第二次通过才不起作用。但是一旦他们停止工作,他们就再也不会开始工作了

现在,我在这里并没有真正编写太多代码,只是添加了带有项目的菜单栏,所以我很确定这不是我所做的。(除非某处记录了 Microsoft.UI.Xaml.Controls 不适用于多个视图)。

我尝试过的一件事是更改 GoToMain_click 例程以尝试独立窗口

即替换

await ApplicationViewSwitcher.switchAsync(mainViewId);

var viewShown = await ApplicationViewSwitcher.tryShowAsStandaloneAsync(mainViewId);

在切换到主视图时,辅助视图应该保持打开状态对我来说更有意义。但是,它并没有解决问题,并且在我对 MenuA 和 MenuC 的测试中停止工作,但 MenuB 仍然工作并在第一次通过时显示它是弹出项,但是第二次迭代并且全部停止工作

处理视图的所有代码都是 Microsoft MultipleView 示例......我不确定问题出在该示例代码还是 NuGet 包中的菜单栏。

任何人都可以阐明并希望给我一个解决方法来重新激活菜单吗?

标签: c#uwpmenubarmultiple-views

解决方案


推荐阅读