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