C# 如何隐藏AttachedFlyout菜单的菜单项?
我能够使用下面的代码以编程方式显示右键单击的菜单,显示/隐藏所需的菜单项很容易,因为我们可以根据需要创建MenuFlyoutItemC# 如何隐藏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
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);