Я создал простой StateTrigger
для привязки к свойству FrameworkElement
Width
. Есть три свойства зависимостей: MinValue
, MaxValue
и Element
. Типы double
, double
и FrameworkElement
соответственно.
И я заметил, что в зависимости от порядка привязки это может работать или не работать.
Это прекрасно работает.
<local:ElementWidthTrigger MaxValue="1000"
MinValue="800"
Element="{Binding ElementName=LayoutRoot}" />
А это не так.
<local:ElementWidthTrigger Element="{Binding ElementName=LayoutRoot}"
MaxValue="1000"
MinValue="800" />
Заметил, что единственная разница в этих двух примерах — порядок привязки свойств Element
.
В ElementWidthTrigger
есть обратный вызов изменения свойства для каждого свойства зависимости. А когда Element
в самом верху, то callback ни разу не вызывался, несмотря ни на что.
x:Bind
решает эту проблему независимо от того, какой порядок используется, но остается вопрос. Может ли кто-нибудь объяснить, почему свойство Element
не может быть привязано в зависимости от порядка привязки?
Работает на Windows 10 1803, сборка 17134.320.
Рабочий пример проекта можно найти здесь.