代码之家  ›  专栏  ›  技术社区  ›  BrettRobi

WPF用户控件交换和保留键盘焦点

  •  2
  • BrettRobi  · 技术社区  · 15 年前

    我有一个WPF窗口,左边有一列按钮。在右侧,单击左侧按钮时显示/隐藏用户控件。

    我创建了一次用户控件,然后用按钮在它们之间切换。当我切换时,我希望将键盘焦点保留在用户控件上次可见时的位置。

    换句话说,我单击按钮A并显示用户控件A。如果我将键盘焦点移动到该用户控件中的文本框中,然后单击按钮B,执行一些操作,然后再次单击按钮A,我希望焦点与上次在用户控件A中使用的文本框相同。

    我对如何完成这项工作有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Timores    15 年前

    声明一个字典,其中键是左侧按钮之一,值是当前焦点控件。单击按钮时,获取当前焦点元素并在字典中设置它(键为以前单击的按钮)。更改显示的用户控件并阅读字典,其中键为刚才单击的按钮。如果有此项的控件,请将焦点设置为它。

    使用FocusManager.FocusedElement了解哪个控件具有焦点(实际上是一个iinputement,应该是字典值的类型),并使用FocusManager.SetFocusedElement将焦点放回(或调用控件上的Focus())。