У меня есть кнопка, которая включена/отключена на основе свойства validation.hasError из нескольких текстовых полей, и она отлично работает, пока я не хочу отключить и включить эту же кнопку из кода позади какой-то бизнес-логики. например.MultiDataTrigger Не запускается, как только свойство isEnabled изменяется от кода позади
if(recordExist) { btn.IsEnabled=true;} else{ btn.isenabled=false;}
теперь, что происходит, что когда-то else
логика выполняется и кнопка отключена, кнопка повторно не включается снова, даже если validation.HasError
всех элементов управления возвращают ложь. и как мудрый, если выполняется логика if
и кнопка включена, она остается включенной, даже если validation.hasError
возвращает true. я хочу, чтобы как-то перезапустить multiDataTriggers
, чтобы проверить Validation.hasError
на textboxes
и обновить свойство кнопки isEnabled
кнопки соответственно. Надеюсь, я достаточно ясен.
Я думаю, было бы полезно добавить, что можно фактически установить значение свойства зависимостей и поддерживать его текущий источник данных (привязка и т. Д.) - с помощью метода SetCurrentValue. В случае OP, которое может быть достигнуто вызовом 'btn.SetCurrentValue (Button.IsEnabledProperty, true/* или false * /)'. – Grx70
@ Grx70 Вы правы. Обновлен мой ответ. Тем не менее, я думаю, что 'ClearValue',' SetCurrentValue' и т. Д. Никогда не должны использоваться для обработки такой логики. Это похоже на хак. Для этих функций хорошо использовать, но это не так. – Athari
Спасибо за ответчиков, но, как я упоминал выше, я использую 'style.triggers' и' MultiDataTrigger' для обработки включения и отключения кнопки, а свойство Isenabled не установлено внутри тега кнопки в xaml. и я попробовал 'setCurrentValue', он вообще не работает и не меняет свойство. и я не совсем понял вариант «ClearValue», вы можете привести пример. –