FocusManager.FocusedElement 不会在页面上绑定

FocusManager.FocusedElement won't bind on a page

我曾经有一个 window 和一个附加的 属性 来跟踪聚焦控件:

FocusManager.FocusedElement="{Binding CurrentlySelectedTextBox, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"

CurrentlySelectedTextBox 是 window 视图模型中的 属性。

现在我的 window 有了框架。框架的内容是一个页面。我将原始 window 的内容移动到具有自己的视图模型的页面。我将附件 属性 从 window 移到了页面。从那时起,CurrentlySelectedTextBox 属性 从未设置。

长时间的搜索一无所获。页面是否不受 FocusManager.FocusedElement 影响?

更新: 如果附加的 属性 在 window 上,即使焦点在页面的控件上,也会设置 FocusManager.FocusedElement .

wpf 中有一个 focusscope 的概念,它可能会导致这样的问题。

基本问题是您的页面与 window 的焦点范围不同。

Focusscope 允许 wpf 为 tabcontrol 和 menu 等控件维护一个逻辑而非物理的焦点概念。

为了维护具有逻辑焦点的元素,默认情况下焦点管理器将关注在每个焦点范围内具有焦点的元素。

该行为在某种程度上是可配置的,但在更改它之前需要非常小心,因为它有副作用。