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
属性,我们需要找到它的物品。