У меня есть пользовательский элемент управления WPF с несколькими DependencyProperties.Как узнать, установлено ли у моего DependencyProperty значение NULL?
Если пользователь связывает «null» с одним из моих DependencyProperties, я хочу что-то сделать, например, изменить значение на что-то действительное.
Проблема в том, что значение по умолчанию для моего свойства равно NULL, и когда они устанавливают значение NULL для этого свойства, OnPropertyChanged не срабатывает.
Есть ли способ выполнить то, что я хочу, кроме изменения значения по умолчанию моего свойства на что-то еще, кроме NULL? Мне нужно было бы создать какое-то «макет» значение для установки по умолчанию
Вы правы, что 'PropertyChangedCallback' не будет срабатывать, если значение * coerced * пользователя совпадает с значением по умолчанию, но ваше заключение ложно. Он может различать «null» как значение по умолчанию или пользователя, поскольку значение по умолчанию никогда не будет передано в «CoerceValueCallback», а значение пользователя (даже если оно соответствует текущему значению по умолчанию). –
Для чего это необходимо, 'DependencyPropertyHelper.GetValueSource (obj, dp) .BaseValueSource == BaseValueSource.Local' будет определять, был ли он настроен пользователем, но до сих пор нет способа зафиксировать тот факт, что он был установлен вообще, если старые и новые значения одинаковы. Однако вы можете выполнить эту проверку на элементе управления «Инициализированное». – nmclean
@nmclean Я не уверен, что вы подразумеваете под «до сих пор нет возможности зафиксировать тот факт, что он был установлен вообще, если старые и новые значения одинаковы». Вы можете наблюдать установленное действие в обратном вызове принуждения, даже если вы не предпринимаете никаких других действий. Он всегда вызывается при установке (но не очищается или когда он имеет только значение по умолчанию). Он вызывается, даже если предлагаемое значение соответствует текущему эффективному значению. –