【发布时间】:2017-10-10 08:42:34
【问题描述】:
我目前正在尝试创建一个动态创建的上下文菜单。我目前正在将ObservableCollection<MenuItem> 绑定到上下文菜单上的ItemsSource 属性。我现在想根据我选择的内容设置菜单打开时列表中项目的可见性。
我试过像这样继承MenuItem
public class CtContextMenuItem : MenuItem
{
public delegate Visibility VisibilityDelegate();
public VisibilityDelegate IsVisibleDelegate = null;
}
我想在打开上下文菜单时将Visibility 设置为VisibilityDelegate 的结果,但我找不到在打开上下文菜单时在MenuItem 上调用的任何事件或方法
有没有办法做到这一点,还是我必须在监听ContextMenuOpening的函数内创建菜单的所有项目?
【问题讨论】:
-
“收听 ContextMenuOpening” - 是的。枚举菜单项并直接或通过属性调用该委托(如果使用数据模板绑定)。考虑添加一点mvvm,而不是使用自定义控件。