Этот вопрос так прост, как кажется.Предположим, button.IsEnabled == false, когда я выполняю button.IsEnabled = true;кнопка остается ложной !!(С помощью функции просмотра Visual Studio для немедленного просмотра значения после его установки в отладчике)
Очевидно, что это не обычное явление, так как обычно этот код работает.Но очевидно, что в системе есть что-то, что блокирует настройку, и я ищу идеи о том, что это может быть.Сначала я подумал, что это потому, что кнопка была подключена к ICommand, который, очевидно, контролирует сам параметр IsEnabled.Поэтому я устранил ICommand.Это работало для другой кнопки, но эта кнопка не подключена к ICommand через "Command = {Binding Path ...}".Фактически эта кнопка создается в C # просто:
Button button = new Button();
button.Content = "Save Record";
button.IsTabStop = false;
Эти кнопки существуют на панели инструментов пользовательского элемента управления, и код, который пытается установить их значение, появляется в обработчике событий PropertyChanged, который я написал.Любопытно, что тот же код изначально успешно устанавливает кнопку в false, и это работает!Что может быть запрещающим установку IsEnabled = true?
Несколько часов спустя:
Бах, ошибка новичка (после 35 лет в ИТ).Далее в коде была строка:
button.Command = new myCommand(...);
Таким образом, фактически кнопка была подключена через командный интерфейс.Я взял это и заменил его обработчиком событий нажатия кнопки, и проблема решена.Поскольку я не смог найти эту проблему в Google, после многочисленных поисков, позвольте мне переформулировать проблему в случае, если другие столкнутся с ней: когда вы подключаете ICommand к UIElement, например, button, menuitem и т. Д. .Net принимает свойство IsEnabled.Вы больше не можете устанавливать это свойство программно.