Код: Выделить всё
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
В приложении есть пользовательские интерфейсы, которые иногда зависают на пару секунд (зависает весь пользовательский интерфейс приложения, а не только какой-то конкретный пользовательский интерфейс). Один пользовательский интерфейс начал зависать гораздо дольше, иногда на неопределенный срок, и освободить его можно только свернув, а затем восстановив главное окно. Его сложно воспроизвести и отладить.
Я уверен, что это связано с пользовательским интерфейсом, а не с кодом. Часто кажется, что это происходит просто при перемещении мыши или щелчке мыши, что заставило меня задуматься, связано ли это с ICommand.CanExecuteChanged. Возможно, мне не следовало реализовывать CanExecuteChanged так, как я это сделал (который будет встроен в каждую RelayCommand), но рефакторинг сотен RelayCommands и кнопок не является вариантом.
Код: Выделить всё
RelayCommandКод: Выделить всё
public RelayCommand(Action execute, Predicate canExecute = null)
{
_execute = execute;
_canExecute = canExecute;
}
Код: Выделить всё
public event EventHandler CanExecuteChanged
{
add
{
if (_canExecute != null)
CommandManager.RequerySuggested += value;
}
remove
{
if (_canExecute != null)
CommandManager.RequerySuggested -= value;
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... utechanged
Мобильная версия