如何更改时,如何将键盘焦点设置为ContentPresenter的内容?

时间:2010-08-04 15:18:51

标签: wpf

我的视图中有一个ContentControl,它与我的viewmodel的CurrentItem属性数据绑定。通过CurrentItem公开的对象每个都有自己的DataTemplate。

当CurrentItem属性更改时,将显示该项的相应DataTemplate,因为它应该是。但是,我找不到将键盘焦点设置为DataTemplate内容的方法。

即使我手动将键盘焦点设置为DataTemplate,如果CurrentItem属性发生更改(并且实例化了新模板),焦点也会丢失(FocusManager.GetFocussedElement返回null)。

如何将键盘焦点设置为ContentPresenter更改时的内容?

1 个答案:

答案 0 :(得分:0)

我相信您可以在ContentControl或ContentPresenter上使用LayoutUpdated事件。这应该在Content / ContentTemplate / etc更改时随时触发。

或者,您可以从ContentControl派生一个类,然后覆盖OnContentChangedOnContentTemplateChanged等方法。然后,您需要向下搜索可视树并设置焦点。您可能需要使用Dispatcher来延迟焦点设置代码。