Как реализовать Command с всплывающей подсказкой в ​​MVVM? - PullRequest
1 голос
/ 02 сентября 2011

В большинстве сред MVVM реализован базовый шаблон команд (например, DelegateCommand в PRISM), который использует методы Execute и CanExecute из ViewModel.

Hovewer, мне часто нужно добавлять подсказку к команде. Например, я хочу описать назначение команды или объяснить, почему она была отключена.

В настоящее время мои подсказки независимы, но это приводит к дублированию определений стилей.

Есть ли способ интегрировать всплывающие подсказки с шаблоном команд MVVM?
Должен ли я создать свой собственный класс Command, или это считается плохой практикой?

Ответы [ 3 ]

3 голосов
/ 02 сентября 2011

Я думаю, что ваш вопрос совершенно правильный. Я не знаю о такой команде. RoutedUICommand - самое близкое, что я могу придумать, но он явно маршрутизируется (не подходит для MVVM) и определяет только свойство Text - нет ToolTip.

Как вы уже намекали, вы можете определиться со своим. В качестве альтернативы, вы можете определить какой-нибудь сервис регистрации команд, в котором модули регистрируют ICommand реализации вместе с метаданными об этой команде (включая подсказку).

2 голосов
/ 02 сентября 2011

Почему бы просто не расширить 'делегировать команду' PRISM и добавить свойство ToolTip?

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

Я считаю, что по умолчанию команды WPF не имеют этого свойства, поскольку ToolTip не обязательно должна быть строкой в ​​WPF - это может быть объект, элемент управления, группа элементов управления и т. Д.

0 голосов
/ 02 сентября 2011

ICommand - это способ привязки к событиям, вызванным пользовательским интерфейсом в MVVM.У него нет свойства ToolTip, и я не вижу, насколько это полезно, поскольку команда действует как обработчик и не имеет пользовательского интерфейса.Вы имеете в виду конкретную команду для всплывающей подсказки, и в этом случае это имеет смысл?

Как правило, вы бы использовали ToolTipService с WPF.

...