2013-09-04 2 views
0

Я новичок в WPF. В настоящее время я разрабатываю приложение в WPF, где мне нужно было включить/отключить кнопку на основе значения из базы данных. Я нашел решения в сети, чтобы сделать это, используя Command, а также Converters. Итак, какой из них является лучшим решением и почему?ICommand vs IValueConverter

+0

'DataTriggers' также может быть удобным в этом сценарии, но' ICommand', вероятно, является лучшим вариантом, если его просто для кнопок. –

+0

Команды будут выполнять эту работу. –

ответ

1

При работе с кнопками, было бы лучше использовать реализацию команды, так как он построен в , и вы можете предоставить параметр команды для предиката, конвертер то, что вам нужно будет записи, например, и место в каждом место, которое вы бы не использовали.

Подведение итогов команды с помощью CanExecute было бы более многоразовым и поддерживаемым.

0

Поскольку вы новичок в WPF, я действительно рекомендую вам начать изучение Rx Extensions и Reactive UI. Реактивный интерфейс обеспечивает командную структуру, которая действительно может помочь вам в сложных сценариях, где ваши команды зависят от многих флагов/условий, которые могут быть вычислены с помощью лямбда-функций и Observables.

Если вы хотите создать сложное приложение, вам обязательно нужно начать изучение MVVM. Для простого применения используйте MVVM Light. Для более сложных приложений WPF вы можете использовать Reactive UI или Microsoft PRISM.

Посмотрите на Reactive UI here. Там же несколько примеров команд в домашней странице Реактивная UI, но вы также можете получить больше образцов в here

Например, вы можете объявить ICommand как это:

DisplayCommand = new ReactiveCommand(this.WhenAny(x => x.Name, x => !string.IsNullOrEmpty(x.Value))); 

Посмотрите документацию.

Как уже упоминалось ранее, для этого сценария вместо конвертера вы должны использовать команду.

Кроме того, если события, которые вы хотите прослушать, являются другими, кроме кликов, используйте System.Interactive behaviors/действия, как описано here.

Смежные вопросы