我以前有一个带有附加属性的窗口来跟踪焦点控件:
FocusManager.FocusedElement="{Binding CurrentlySelectedTextBox, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"CurrentlySelectedTextBox是窗口视图模型中的一个属性。
现在我的窗户有了一个框架。框架的内容是一个页面。我用自己的视图模型将原始窗口的内容移到页面上。我将附加的属性从窗口移到页面上。从那时起,CurrentlySelectedTextBox属性就不再设置了。
长时间的搜寻毫无意义。页面对FocusManager.FocusedElement免疫吗?
更新:如果附加属性在窗口上,即使焦点位于页面的控件上,FocusManager.FocusedElement也会被设置。
发布于 2019-10-31 12:34:23
在wpf中有一个焦点范围的概念,它可以引起这样的问题。
最基本的问题是您的页面是一个与窗口不同的焦点范围。
Focusscope允许wpf为诸如选项卡控件和菜单这样的控件维护一个逻辑而不是物理的焦点概念。
为了维护具有逻辑焦点的元素,focusmanager在默认情况下将关注每个焦点范围内具有焦点的元素。
这种行为在某种程度上是可配置的,但是您需要非常小心才能改变这一点,因为这是有副作用的。
https://stackoverflow.com/questions/58559974
复制相似问题