2011-09-02 32 views
1

大多數MVVM框架實現基本的Command模式(例如PRISM中的DelegateCommand),它使用ViewModel中的Execute和CanExecute方法。如何在MVVM中使用Tooltip實現命令?

Hovewer,我經常需要給命令添加一個工具提示。例如,我想描述一個命令或解釋的目的,爲什麼它已被禁用。

目前我的工具提示是獨立的,但這會導致樣式定義的代碼重複。

有沒有辦法將工具提示與MVVM Command模式集成?
我應該創建自己的Command類,還是被認爲是不好的做法?

回答

2

爲什麼不擴展PRISM的'Delegate Command'並添加ToolTip屬性?

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

我相信默認WPF命令沒有這樣的屬性,因爲一個ToolTip不必在WPF字符串 - 它可以是一個對象,控制,一組控件等

0

ICommand是綁定到MVVM中UI引發的事件的一種方法。它沒有ToolTip屬性,我不明白這是如何有用的,因爲該命令充當處理程序並且沒有UI。你是指一個ToolTip特定的命令,在這種情況下它確實有意義嗎?

通常,您可以使用WPF的ToolTipService

+0

ToolTipService不能幫助我,它太複雜了。我的意思是我的典型按鈕有一個提示工具提示(簡單文本),你可以說它是Command的文檔,所以它可能是命令的一部分。 –

+0

在哪個框架中? [ICommand的](http://msdn.microsoft.com/en-us/library/ms616875.aspx) – TheCodeKing

3

我認爲你的問題是完全有效的。我不知道這樣的命令。 RoutedUICommand是我能想到的最接近的,但它顯然是路由(對MVVM沒有好處),只定義了Text屬性 - 沒有ToolTip

正如你暗示的那樣,你當然可以定義你自己的。或者,您可以定義某種類型的命令註冊服務,從而模塊會註冊該命令的相關元數據(包括工具提示)。