Я новичок в WPF. В настоящее время я разрабатываю приложение в WPF, где мне нужно было включить/отключить кнопку на основе значения из базы данных. Я нашел решения в сети, чтобы сделать это, используя Command, а также Converters. Итак, какой из них является лучшим решением и почему?ICommand vs IValueConverter
ответ
При работе с кнопками, было бы лучше использовать реализацию команды, так как он построен в , и вы можете предоставить параметр команды для предиката, конвертер то, что вам нужно будет записи, например, и место в каждом место, которое вы бы не использовали.
Подведение итогов команды с помощью CanExecute было бы более многоразовым и поддерживаемым.
Поскольку вы новичок в 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.
- 1. ivalueconverter vs system.converter vs delegate
- 2. WPF ICommand vs RoutedCommand
- 3. Relay/ICommand vs DelegateCommand - отличия
- 4. Проблема IValueConverter
- 5. WPF - общий IValueConverter?
- 6. CultureInfo о реализации IValueConverter
- 7. IValueConverter в ResourceDictionary
- 8. "Windows.UI.Xaml.Controls.TextBlock", когда IValueConverter?
- 9. Silverlight 3 IValueConverter проблемы
- 10. Правильно привязано IValueConverter
- 11. Windows Phone IValueConverter Issue
- 12. Блоки IValueConverter предотвращают удаление
- 13. Pass Color to IValueConverter
- 14. IValueConverter и видимость
- 15. Как реализовать NullableHasValueToBool IValueConverter
- 16. WPF: IValueConverter со списком
- 17. Свойство видимости IValueConverter
- 18. IValueConverter и локализация
- 19. WPF Ivalueconverter пустые значения
- 20. Требуется объяснение интерфейса IValueConverter?
- 21. IValueConverter - Кастинг общих коллекций
- 22. .net WPF IValueConverter Конструктор
- 23. Передача данных IValueConverter
- 24. IValueConverter не выполняет
- 25. LongTimeString устарел? C# IValueConverter
- 26. Async Реализация IValueConverter
- 27. WPF: односторонний IValueConverter
- 28. Try-Catch в IValueConverter
- 29. Использование IValueConverter с DynamicResource?
- 30. IValueCOnverter не работает
'DataTriggers' также может быть удобным в этом сценарии, но' ICommand', вероятно, является лучшим вариантом, если его просто для кнопок. –
Команды будут выполнять эту работу. –