如何在MVVM中使用工具提示实现命令



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

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

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

是否有方法将工具提示与MVVM命令模式集成?
我是否应该创建自己的Command类,或者它被认为是糟糕的实践?

我认为你的问题完全正确。我不知道有这样的命令。RoutedUICommand是我能想到的最接近的,但它显然是路由的(对MVVM不好),只定义了Text属性-没有ToolTip

正如你所暗示的,你当然可以定义你自己的。或者,您可以定义某种命令注册服务,通过该服务模块注册ICommand实现以及关于该命令的元数据(包括工具提示)。

为什么不扩展PRISM的'Delegate Command'并添加ToolTip属性呢?

public class DelegateCommandEx : DelegateCommand 
{
    public string ToolTip { get; set; }
}

我相信默认情况下WPF命令没有这个属性,因为ToolTip在WPF中不一定是字符串——它可以是一个对象,一个控件,一组控件,等等

iccommand是绑定到MVVM中UI引发的事件的一种方式。它没有一个ToolTip属性,我不知道这是如何有用的命令作为一个处理程序,没有UI。您指的是工具提示特定的命令,在这种情况下,它是有意义的?

一般你会在WPF中使用ToolTipService

最新更新