绑定到 ElementName 取决于绑定顺序
Binding to ElementName depends on binding order
我创建了简单的 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
位于最顶部时,无论如何都不会调用它的回调。
x:Bind
解决了这个问题,无论使用什么顺序,但问题仍然存在。谁能解释为什么 Element
属性 无法根据绑定顺序进行绑定?
运行 Windows 10 1803 build 17134.320.
可以找到工作示例项目 here。
哇,这真是个谜!虽然我无法找出问题的原因,但它确实看起来像是 UWP 中的一个错误。我注意到将 x:Name
添加到 VisualStates
中的一个的简单操作将使 ElementName
-一阶工作按预期进行:
<VisualState x:Name="Test">
<VisualState.StateTriggers>
<local:ElementWidthTrigger Element="{Binding ElementName=LayoutRoot}"
MaxValue="1000"
MinValue="800" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Rectangle.Fill" Value="Blue" />
</VisualState.Setters>
</VisualState>
如果 UWP 团队的某个人看到并提供帮助,那就太好了,因为它可能需要深入了解内部结构才能理解正在发生的事情。
感谢您报告此问题并提供可靠的重现项目 - 这是一个平台错误。我已将其记录在我们的数据库中并分配给正确的团队。再次感谢!
我创建了简单的 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
位于最顶部时,无论如何都不会调用它的回调。
x:Bind
解决了这个问题,无论使用什么顺序,但问题仍然存在。谁能解释为什么 Element
属性 无法根据绑定顺序进行绑定?
运行 Windows 10 1803 build 17134.320.
可以找到工作示例项目 here。
哇,这真是个谜!虽然我无法找出问题的原因,但它确实看起来像是 UWP 中的一个错误。我注意到将 x:Name
添加到 VisualStates
中的一个的简单操作将使 ElementName
-一阶工作按预期进行:
<VisualState x:Name="Test">
<VisualState.StateTriggers>
<local:ElementWidthTrigger Element="{Binding ElementName=LayoutRoot}"
MaxValue="1000"
MinValue="800" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Rectangle.Fill" Value="Blue" />
</VisualState.Setters>
</VisualState>
如果 UWP 团队的某个人看到并提供帮助,那就太好了,因为它可能需要深入了解内部结构才能理解正在发生的事情。
感谢您报告此问题并提供可靠的重现项目 - 这是一个平台错误。我已将其记录在我们的数据库中并分配给正确的团队。再次感谢!