Xaml 在UWP中单击菜单项时,如何获取所有菜单项?

Xaml 在UWP中单击菜单项时,如何获取所有菜单项?,xaml,uwp,Xaml,Uwp,我试过的是什么 MenuFlyout MenuFlyout=new MenuFlyout(); ToggleMenuFlyoutItem ToogleMenuflyoutItem1= new ToggleMenuFlyoutItem(); ToogleMenuflyoutItem1.Click+=Clicked; ToggleMenuFlyoutItem ToogleMenuflyoutItem2= new ToggleMenuFlyoutItem(); ToogleMenuflyoutItem

我试过的是什么

MenuFlyout MenuFlyout=new MenuFlyout();
ToggleMenuFlyoutItem ToogleMenuflyoutItem1= new ToggleMenuFlyoutItem();
ToogleMenuflyoutItem1.Click+=Clicked;
ToggleMenuFlyoutItem ToogleMenuflyoutItem2= new ToggleMenuFlyoutItem();
ToogleMenuflyoutItem2.Click+=Clicked;
ToggleMenuFlyoutItem ToogleMenuflyoutItem3= new ToggleMenuFlyoutItem();
ToogleMenuflyoutItem3.Click+=Clicked;
ToggleMenuFlyoutItem ToogleMenuflyoutItem4= new ToggleMenuFlyoutItem();
ToogleMenuflyoutItem4.Click+=Clicked;
MenuFlyout.Items.Add(ToogleMenuflyoutItem1);
MenuFlyout.Items.Add(ToogleMenuflyoutItem2);
MenuFlyout.Items.Add(ToogleMenuflyoutItem3);
MenuFlyout.Items.Add(ToogleMenuflyoutItem4);
private void Cliked(object sender, RoutedEventArgs e)
{
 //I need All ToogleMenuFloutItem List//Here
}

我不知道如何实现这一点?我希望所有ToogleMenuFlyoutItem都位于任何ToogleMenuFlyoutItem的单击事件中。

如果希望所有ToogleMenuFlyoutItem,则需要在上下文之外进行定义

MenuFlyout MenuFlyout=new MenuFlyout()

然后在
内单击
事件,使用

private void Clicked(object sender, RoutedEventArgs e)
{
    foreach(var item in menuFlyout.Items)
    {
        if (item != null)
        {
            var toogleMenuflyoutItem = item as ToggleMenuFlyoutItem;
        }
    }
}

这绝对是一种丑陋的方式。但如果您真正想要的是“仅从一个ToggleMenuFlyoutItem的Click事件方法获取每个ToggleMenuFlyoutItem”。也许这是其中一种方法

private void Clicked(object sender, RoutedEventArgs e)
{
    var item = sender as ToggleMenuFlyoutItem;

    List<ToggleMenuFlyoutItem> itemList = new List<ToggleMenuFlyoutItem>();

    DependencyObject current = item;
    while (true)
    {
        current = VisualTreeHelper.GetParent(current);
        if(current is MenuFlyoutPresenter || current == null)
        {
            break;
        }
    }

    if(current != null)
    {
        var flyoutPresenter = (current as MenuFlyoutPresenter);
        var items = flyoutPresenter.Items;
        foreach (var x in items)
        {
            if(x is ToggleMenuFlyoutItem)
            {
                itemList.Add(x as ToggleMenuFlyoutItem);
            }
        }
    }

    foreach(var x in itemList)
    {
        ///something;
    }
}
private void已单击(对象发送者,路由目标)
{
var item=发送方作为ToggleMenuFlyoutItem;
List itemList=新列表();
DependencyObject当前=项目;
while(true)
{
当前=VisualTreeHelper.GetParent(当前);
如果(当前为菜单输出演示器| |当前==null)
{
打破
}
}
如果(当前!=null)
{
var FLYOUTPRENTER=(当前为MenuFlyoutPresenter);
var items=flyoutPresenter.items;
foreach(项目中的var x)
{
如果(x为ToggleMenuFlyUtiItem)
{
itemList.Add(x为ToggleMenuFlyUtiItem);
}
}
}
foreach(项目列表中的变量x)
{
///某物;
}
}

为什么切换MenufLyoutItem.Parent不适用于我的案例?当我尝试使用它提供的切换MenufLyoutItem获取Parent(MenuFlyout)时,为null(空)?为什么?我的Parent(MenuFlyout)对象在另一个类中。所以我尝试使用child(切换MenufLyoutItem)获取Parent。我从未对列表或集合使用过
Parent
属性,我们需要找到它的物品。