我想创建上下文菜单项集合,其中每个项目都有标题、命令、可以执行命令,还想添加一个新功能以提高可见性,该功能也类似于“canExecute”,但具有其他条件。
当我在我的行上按下时,DataGrid
我想创建一个新的上下文菜单,其中包含绑定到上下文菜单项源(ItemContainerStyle
)的集合上下文菜单项。我想在每个菜单项上执行 2 个功能:
CanExecute
- 禁用/启用项目CanSee
- 用于更改上下文菜单项的可见性,以防它与项目无关。
最好的方法是什么?
我想创建上下文菜单项集合,其中每个项目都有标题、命令、可以执行命令,还想添加一个新功能以提高可见性,该功能也类似于“canExecute”,但具有其他条件。
当我在我的行上按下时,DataGrid
我想创建一个新的上下文菜单,其中包含绑定到上下文菜单项源(ItemContainerStyle
)的集合上下文菜单项。我想在每个菜单项上执行 2 个功能:
CanExecute
- 禁用/启用项目CanSee
- 用于更改上下文菜单项的可见性,以防它与项目无关。最好的方法是什么?
您必须已经实现DelegateCommand<T>
了,在构造函数中传递另一个Func<T,bool>
,并从方法返回按位和委托和委托CanExecute()
的 (&&) 。canExecute
canSee
public class DelegateCommand<T> : ICommand
{
private readonly Action<T> executeMethod;
private readonly Func<T, bool> canExecuteMethod;
private readonly Func<T, bool> canSeeMethod;
public DelegateCommand(Action<T> executeMethod) : this(executeMethod, null)
{}
public DelegateCommand(Action<T> executeMethod,
Func<T, bool> canExecuteMethod)
: this(executeMethod, canExecuteMethod, null)
{}
public DelegateCommand(Action<T> executeMethod,
Func<T, bool> canExecuteMethod,
Func<T, bool> canSeeMethod)
{
this.executeMethod = executeMethod;
this.canExecuteMethod = canExecuteMethod;
this.canSeeMethod = canSeeMethod;
}
...... //Other implementations here
public bool CanExecute(T parameter)
{
if (canExecuteMethod == null) return true;
return canExecuteMethod(parameter) && canSeeMethod(parameter);
}
}