WPF NavigationViewItem 不需要的空弹出窗口/弹出窗口

问题描述 投票:0回答:1

我有一个 WPF 应用程序,它使用 ModernWPF 工具包实现了 NavigationView。导航视图菜单由三个项目组成,每个项目都有图标和选择文本(正如您所期望的那样),以及一个用于扩展和收缩侧窗格的汉堡包按钮。我遇到的问题是当侧窗格处于关闭状态并且我选择一个菜单项图标时。在我点击其他地方之前,我会出现一个不需要的空弹出窗口。我认为这可能是一个空的弹出窗口。

<Window x:Class="My.App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:ui="http://schemas.modernwpf.com/2019"
        xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
        xmlns:rx="http://reactiveui.net"
        xmlns:local="clr-namespace:My.App"
        mc:Ignorable="d"
        ui:ThemeManager.RequestedTheme="Dark"
        Title="My-App" Height="720" Width="1080">
    <Window.Resources>
        <!--  Navigation menu item  -->
        <DataTemplate x:Key="NavigationViewMenuItem">
            <ui:NavigationViewItem
                Content="{Binding Title}"
                Icon="{Binding Icon}"
                IsEnabled="{Binding Selectable}"
                MenuItemsSource="{Binding Children}"
                SelectsOnInvoked="{Binding Selectable}"/>
        </DataTemplate>
        <!--  Navigation header item  -->
        <DataTemplate x:Key="NavigationViewHeaderItem">
            <ui:NavigationViewItemHeader Content="{Binding Title}" />
        </DataTemplate>
        <!--  Template selector for navigation items  -->
        <local:NavigationTemplateSelector
            x:Key="NavigationTemplateSelector"
            HeaderTemplate="{StaticResource NavigationViewHeaderItem}"
            ItemTemplate="{StaticResource NavigationViewMenuItem}" />
    </Window.Resources>
    <Grid UseLayoutRounding="True">
        <ui:NavigationView
            x:Name="NavigationView"
            AlwaysShowHeader="True"
            Grid.Row="0"
            IsPaneOpen="False"
            OpenPaneLength="150"
            IsSettingsVisible="False"
            IsBackButtonVisible="Collapsed"
            IsPaneToggleButtonVisible="true"
            ItemInvoked="NavigationView_ItemInvoked"
            MenuItemTemplateSelector="{StaticResource NavigationTemplateSelector}">
            <rx:RoutedViewHost
                x:Name="MainHost"
                Duration="0"
                ToolTip="{x:Null}"
                VerticalContentAlignment="Stretch"
                HorizontalContentAlignment="Stretch"/>
        </ui:NavigationView>
    </Grid>
</Window>

导航窗格处于打开状态时不会出现此类弹出窗口。 如果弹出窗口是弹出窗口,有人可以帮助禁用它,或建议其他解决方案。

我包含的 XAML 代码仅供观察,因为我认为后面的代码不会提供任何其他内容,但是,如果这还不足以说明问题,请告诉我。

编辑: 我意识到这个问题可能与 ModernWPF 工具包特别相关,但是,也许有人能够提供如何解决该问题的想法。

谢谢。

c# wpf xaml navigation-drawer flyout
1个回答
0
投票

嗯,对于给定的代码,它并不能明显地重现。我引用了“ModernWPF”提供的示例应用程序中的代码,并尝试使用您的代码创建示例。 您能否提供

NavigationTemplateSelector
的代码以及如何添加菜单项?

<Window x:Class="WpfApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ui="http://schemas.modernwpf.com/2019"
    xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
    xmlns:rx="http://reactiveui.net"
    xmlns:local="clr-namespace:WpfApp"
    ui:WindowHelper.UseModernWindowStyle="True"
    ui:ThemeManager.RequestedTheme="Dark"
    Title="WPF Toolbox Example" Height="450" Width="800">
<Window.Resources>
    <!--  Navigation menu item  -->
    <DataTemplate x:Key="NavigationViewMenuItem">
        <ui:NavigationViewItem
            Content="{Binding Title}"
            Icon="{Binding Icon}"
            IsEnabled="{Binding Selectable}"
            MenuItemsSource="{Binding Children}"
            SelectsOnInvoked="{Binding Selectable}"/>
    </DataTemplate>
    <!--  Navigation header item  -->
    <DataTemplate x:Key="NavigationViewHeaderItem">
        <ui:NavigationViewItemHeader Content="{Binding Title}" />
    </DataTemplate>
    <!--  Template selector for navigation items  -->
    <local:NavigationTemplateSelector
        x:Key="NavigationTemplateSelector"
        HeaderTemplate="{StaticResource NavigationViewHeaderItem}"
        ItemTemplate="{StaticResource NavigationViewMenuItem}" />
</Window.Resources>
<Grid UseLayoutRounding="True">
    <ui:NavigationView
        x:Name="NavigationView"
        AlwaysShowHeader="True"
        Grid.Row="0"
        IsPaneOpen="False"
        OpenPaneLength="150"
        IsSettingsVisible="False"
        IsBackButtonVisible="Collapsed"
        IsPaneToggleButtonVisible="true"
        ItemInvoked="NavigationView_ItemInvoked"

        >
        <ui:NavigationView.MenuItems>
            <ui:NavigationViewItem Content="Menu Item1" Tag="SamplePage1" Icon="Play" >
                <ui:NavigationViewItem.MenuItems>
                    <ui:NavigationViewItem Content="Mail" Icon="Mail" ToolTipService.ToolTip="Mail" Tag="SamplePage3"/>
                    <ui:NavigationViewItem Content="Calendar" Icon="Calendar" ToolTipService.ToolTip="Calendar" Tag="SamplePage4"/>
                </ui:NavigationViewItem.MenuItems>
            </ui:NavigationViewItem>
            <ui:NavigationViewItem Content="Menu Item2" Tag="SamplePage2" Icon="Save" />
            <ui:NavigationViewItem Content="Menu Item3" Tag="SamplePage3" Icon="Refresh" />
            <ui:NavigationViewItem Content="Menu Item4" Tag="SamplePage4" Icon="Download" />
        </ui:NavigationView.MenuItems>
        <rx:RoutedViewHost
            x:Name="MainHost"
            Duration="0"
            ToolTip="{x:Null}"
            VerticalContentAlignment="Stretch"
            HorizontalContentAlignment="Stretch"/>
        
    </ui:NavigationView>
</Grid>
© www.soinside.com 2019 - 2024. All rights reserved.