我试图展示一个SubMenu项目。每次IsSubmenuOpen
设置为true时,我都会在视图模型中调用以刷新MenuItem绑定的列表。
不幸的是,这里没有说明这一点(即使Windows有3个子项目):
查看型号:
public ObservableCollection<Item> CustomLayoutList { get; set; }
public bool LayoutOptionsOpen { set { UpdateCustomLayoutList(); } }
private void UpdateCustomLayoutList()
{
CustomLayoutList.Clear();
var items = GetItems();
foreach(var item in items)
{
CustomLayoutList.Add(item);
}
}
在Xaml中绑定:
<MenuItem ItemsSource="{Binding CustomLayoutList }" IsSubmenuOpen="{Binding LayoutOptionsOpen, Mode=OneWayToSource}"></MenuItem>
编辑:显然在我的电脑上这很好用。该列表正确填充并显示SubMenu。然而,对于其他一些人来说,SubMenu不会打开 - 尽管验证列表中有项目。
要解决此问题,我更改了我的解决方案以收听SubMenuOpen
事件,并在我的xaml.cs代码隐藏中直接调用UpdateCustomLayoutList
。这有效,但为什么我的初始解决方案不起作用,是否有更好的方法来解决这个问题?最终我想要零代码。