Наш пользовательский интерфейс в настоящее время имеет множество элементов управления, которые связаны командами с некоторым комплексом CanExecutes
. Проблема, с которой мы сталкиваемся, заключается в том, что всякий раз, когда CommandManager
определяет, что пользовательский интерфейс должен быть повторно опротестован, все команды запускают свой CanExecute
, что, в свою очередь, приводит к довольно сильному удару по конкретным сценариям.Как запретить CommandManager вызывать CanExecute всякий раз, когда есть взаимодействие с пользовательским интерфейсом?
Читая этот пост: How does CommandManager.RequerySuggested work?
Похоже, что CommandManager
будет повторно evaulate на простом ключе вниз, события перемещения мыши и т.д. Есть ли способ, чтобы предотвратить это, и вместо этого, есть менеджер команды переоценивать при ручном вызове?
Я не думаю, что вы можете. 'CanExecute' не должен содержать каких-либо сложных функций. Может быть, вы можете создать переменную bool, которая сообщит вам, может ли она быть выполнена или нет, и изменить эту переменную при изменении условий? – vesan
И когда/где вы его вызываете? – Dzyann
@ Dzyann, хорошим сценарием было бы, когда конкретное событие будет завершено (или будет поднято), а затем все переопределенные команды « –