1

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

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

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

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

4

3 回答 3

3

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

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

于 2011-09-02T08:32:53.447 回答
2

为什么不只是扩展 PRISM 的“委托命令”并添加一个ToolTip属性?

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

我相信默认情况下 WPF 命令没有该属性,因为 aToolTip不必是 WPF 中的字符串 - 它可以是一个对象、一个控件、一组控件等

于 2011-09-02T16:37:44.183 回答
0

ICommand是一种绑定到 MVVM 中 UI 引发的事件的方法。它没有ToolTip属性,我看不出这有什么用,因为该命令充当处理程序并且没有 UI。您是否指的是工具提示特定的命令,在这种情况下它确实有意义?

通常,您会将ToolTipService与 WPF 一起使用。

于 2011-09-02T07:26:33.970 回答