2015-04-27 1 views
1

В моем приложении у меня есть несколько кнопок внутри панели, которая в какой-то момент установлена ​​в рулон, эти кнопки имеют командную привязку с методом "CanExecute". Я хотел бы прекратить выполнение логики внутри метода "CanExecute", пока панель не видна. Если я не вижу кнопку, мне не нужно тратить ресурсы, чтобы узнать, может ли она быть выполнена. Я могу попытаться привязать видимость этой панели к методу "CanExecute", но я хотел бы получить решение для каждой кнопки, поэтому, если они не видны, не теряйте время.Кнопка WPF скрыта, но метод «CanExecute» поднимается

Спасибо!

ответ

0

Я думаю, вы можете удалить привязку команды, когда кнопка не видима.

  1. Зарегистрировать CommandBinding: myUIelement.CommandBindings.Add (МояКоманда);
  2. Отменить регистрацию CommandBinding: myUIelement.CommandBindings.Remove (myCommand);
  3. Отменить регистрацию всех CommandBindings: myUIelement.CommandBindings.Clear();
+0

Это хороший workarround, но я должен был бы написать это в коде позади экрана или BaseButton класса с подобным поведением – Nacho

+0

Вы можете удалить и установить команду привязки по используя стили и триггеры в XAML. – Clint

0

Как об использовании Тип объекта, если он имеет параметры

т.е.

_someCommand = new RelayCommand(
        p => someCommandExecute((someObject)p), 
        p => p is someObject); 

или попробовать проверки значение, если оно не имеет параметров

_someCommand = new RelayCommand(
        p => someCommandExecute((someObject)p), 
        p => someObject != null); 

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

Это также может помочь вам https://rachel53461.wordpress.com/2011/05/08/simplemvvmexample/

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

  • Нет связанных вопросов^_^