首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF数据绑定被FocusManager破坏-为什么?

WPF数据绑定被FocusManager破坏-为什么?
EN

Stack Overflow用户
提问于 2015-06-05 22:41:19
回答 1查看 351关注 0票数 5

过去几天我一直在追踪这个窃听器。我的装订被拆开了,我不知道为什么。当我的应用程序启动时,我希望我的一个文本框具有焦点。因此,我使用了一个附加属性来设置焦点元素。我的一些数据绑定停止工作。

由于某些原因,简单地重新安排我的XAML导致了bug的消失。

举个例子:

代码语言:javascript
复制
<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绑定中断。如果我交换最后两行,如下:

代码语言:javascript
复制
<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中的焦点元素会导致它之后的所有绑定中断.

还有其他人看过这个吗?如果是的话,你知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-24 13:39:30

我认为使用FocusManager.FocusedElement的正确方法是将附加属性设置在可视化树中较高的元素上:

代码语言:javascript
复制
<StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}">
  <Button Name="firstButton" />
</StackPanel>

可能设置元素本身上的附加属性不受很好支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30676863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档