大多数 MVVM 框架都实现了基本的命令模式(例如 PRISM 中的 DelegateCommand),它使用 ViewModel 中的 Execute 和 CanExecute 方法。
但是,我经常需要在命令中添加工具提示。例如,我想描述一个命令的目的或解释它为什么被禁用。
目前我的工具提示是独立的,但这会导致样式定义的代码重复。
有没有办法将工具提示与 MVVM 命令模式集成?
我应该创建自己的 Command 类,还是被认为是不好的做法?
我认为你的问题是完全有效的。我不知道这样的命令。RoutedUICommand
是我能想到的最接近的,但它显然是路由的(对 MVVM 没有好处)并且只定义了一个Text
属性 - no ToolTip
.
正如您所暗示的,您当然可以定义自己的。或者,您可以定义某种命令注册服务,从而模块注册ICommand
实现以及有关该命令的元数据(包括工具提示)。
为什么不只是扩展 PRISM 的“委托命令”并添加一个ToolTip
属性?
public class DelegateCommandEx : DelegateCommand
{
public string ToolTip { get; set; }
}
我相信默认情况下 WPF 命令没有该属性,因为 aToolTip
不必是 WPF 中的字符串 - 它可以是一个对象、一个控件、一组控件等
ICommand是一种绑定到 MVVM 中 UI 引发的事件的方法。它没有ToolTip
属性,我看不出这有什么用,因为该命令充当处理程序并且没有 UI。您是否指的是工具提示特定的命令,在这种情况下它确实有意义?
通常,您会将ToolTipService与 WPF 一起使用。