|
|||||||
Использование комманд
Время создания: 16.11.2019 20:05
Текстовые метки: Комманды, ICommand
Раздел: Компьютер - C# - WPF
Запись: Kozlov-AE/Tetra/master/base/15739239117wpae4zpi8/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
1. Создаем класс Command. Наследуем его от интерфейса ICommand. Далее всё стандартно: class Command : ICommand { private Action<object> execute; //Фукция которую будем передавать private Func<object, bool> canExecute; //Условие, при котором можно выполнять команду
public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public Command(Action<object> execute, Func<object, bool> canExecute = null) { this.execute = execute; this.canExecute = canExecute; } public bool CanExecute(object parameter) { return this.canExecute == null || this.canExecute(parameter); } public void Execute(object parameter) { this.execute(parameter); } } Как использовать: В классе ДатаКонтекста (ViewModel) Command serializeCompanyToXML; // Объявил приватную команду public Command SerializeCompanyToXML //Это как типа публичного свойства { get => serializeCompanyToXML ?? // это приватная комманда (serializeCompanyToXML = new Command(obj => //Создаем новый объект калсса комманд (см выше) { //Тут начинается выполение всяких методов (можно просто свой метод засунуть) SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "XML документ|*.xml"; if (saveFileDialog.ShowDialog() == true) { selectedCompany.SerializeToXML(saveFileDialog.FileName); } }, obj => selectedCompany != null //Это проверка на возможность выполнения команды. Если в окне не выделена компания, то во вью модель не передана компания и в этой переменной ничего нет. А значит элемент реализующий эту комнду будет не активен. )); } |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|