过去几天我一直在追踪这个窃听器。我的装订被拆开了,我不知道为什么。当我的应用程序启动时,我希望我的一个文本框具有焦点。因此,我使用了一个附加属性来设置焦点元素。我的一些数据绑定停止工作。
由于某些原因,简单地重新安排我的XAML导致了bug的消失。
举个例子:
<StackPanel>
<TextBox Text="{Binding Tb1}"/>
<TextBox Text="{Binding Tb2}"/>
<TextBox Text="{Binding Tb3}"
FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>
<TextBox Text="{Binding Tb4}"/>
</StackPanel>Tb1、Tb2和Tb3的绑定都可以工作。 Tb4绑定中断。如果我交换最后两行,如下:
<StackPanel>
<TextBox Text="{Binding Tb1}"/>
<TextBox Text="{Binding Tb2}"/>
<TextBox Text="{Binding Tb4}"/>
<TextBox Text="{Binding Tb3}"
FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>
</StackPanel>那么所有的绑定都能正常工作。
由于某些原因,设置XAML中的焦点元素会导致它之后的所有绑定中断.
还有其他人看过这个吗?如果是的话,你知道为什么会这样吗?
发布于 2015-07-24 13:39:30
我认为使用FocusManager.FocusedElement的正确方法是将附加属性设置在可视化树中较高的元素上:
<StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}">
<Button Name="firstButton" />
</StackPanel>可能设置元素本身上的附加属性不受很好支持。
https://stackoverflow.com/questions/30676863
复制相似问题