如何在MVVM中使用Tooltip实现Command?

时间:2011-09-02 07:02:41

标签: wpf mvvm tooltip icommand

大多数MVVM框架实现了基本的Command模式(例如PRISM中的DelegateCommand),它使用ViewModel中的Execute和CanExecute方法。

Hovewer,我经常需要在命令中添加工具提示。例如,我想描述一个命令或解释的目的,为什么它被禁用。

目前我的工具提示是独立的,但这会导致样式定义的代码重复。

有没有办法将工具提示与MVVM命令模式集成?
我应该创建自己的Command类,还是被认为是不好的做法?

3 个答案:

答案 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一起使用。