Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何隐藏AttachedFlyout菜单的菜单项?_C#_Uwp_Uwp Xaml - Fatal编程技术网

C# 如何隐藏AttachedFlyout菜单的菜单项?

C# 如何隐藏AttachedFlyout菜单的菜单项?,c#,uwp,uwp-xaml,C#,Uwp,Uwp Xaml,我能够使用下面的代码以编程方式显示右键单击的菜单,显示/隐藏所需的菜单项很容易,因为我们可以根据需要创建MenuFlyoutItem private void MyGrid_RightTapped(object sender, RightTappedRoutedEventArgs e) { MenuFlyout myFlyout = new MenuFlyout(); MenuFlyoutItem mnu1 = new MenuFlyoutItem { Text = "Renam

我能够使用下面的代码以编程方式显示右键单击的菜单,显示/隐藏所需的菜单项很容易,因为我们可以根据需要创建MenuFlyoutItem

private void MyGrid_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
    MenuFlyout myFlyout = new MenuFlyout();
    MenuFlyoutItem mnu1 = new MenuFlyoutItem { Text = "Rename" };    
    MenuFlyoutItem mnu2 = new MenuFlyoutItem { Text = "Delete" };    
    myFlyout.Items.Add(mnu1);   
    myFlyout.Items.Add(mnu2);
    mnu1.Click += mnu1_Click;
    mnu2.Click += mnu2_Click;

    FrameworkElement senderElement = sender as FrameworkElement;
    myFlyout.ShowAt(sender as UIElement, e.GetPosition(sender as UIElement));
}
但是,当我使用xaml作为AttachedFlyout创建菜单时,我无法隐藏特定的菜单项。这是我的密码:

    <ListView.ItemTemplate>
    <DataTemplate >
..............
        <Grid Name="GrdForFolderMenu">
            <FlyoutBase.AttachedFlyout >
                <MenuFlyout Placement="Right">
                    <MenuFlyoutItem Name="MenuFolderCreate" Text="New Folder" Click="MenuFolderCreate_Click" DataContext="Folders"/>
                    <MenuFlyoutItem Name="MenuFolderRename"  Text="Rename" Click="MenuFolderRename_Click"/>
                    <MenuFlyoutItem Name="MenuFolderExport"  Text="Export" Click="MenuFolderExport_Click" />
                    <MenuFlyoutSeparator />
                    <MenuFlyoutItem Name="MenuFolderDelete"  Text="Delete" Click="MenuFolderDelete_Click" />
                </MenuFlyout>
            </FlyoutBase.AttachedFlyout>
        ......
        ........

挣扎了很长时间来隐藏特定的菜单项,在代码中!请帮忙

您只需获取
菜单输出
,然后将特定
菜单使用项的
可见性
设置为
折叠
,或者将其从列表中删除

if (FlyoutBase.GetAttachedFlyout((FrameworkElement)sender) is MenuFlyout menuFlyout)
{
    // Hide 'MenuFolderExport' MenuFlyoutItem
    //menuFlyout.Items[2].Visibility = Visibility.Collapsed;

    // Or, remove 'MenuFolderExport' MenuFlyoutItem
    menuFlyout.Items.Remove(menuFlyout.Items[2]);
}

FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);
我还将
右键点击
附加到您的
GrdForFolderMenu
,并将所有
Name=“xxx”
替换为
x:Name=“xxx”

if (FlyoutBase.GetAttachedFlyout((FrameworkElement)sender) is MenuFlyout menuFlyout)
{
    // Hide 'MenuFolderExport' MenuFlyoutItem
    //menuFlyout.Items[2].Visibility = Visibility.Collapsed;

    // Or, remove 'MenuFolderExport' MenuFlyoutItem
    menuFlyout.Items.Remove(menuFlyout.Items[2]);
}

FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);