我的视图中有一个ContentControl,它与我的viewmodel的CurrentItem属性数据绑定。通过CurrentItem公开的对象每个都有自己的DataTemplate。
当CurrentItem属性更改时,将显示该项的相应DataTemplate,因为它应该是。但是,我找不到将键盘焦点设置为DataTemplate内容的方法。
即使我手动将键盘焦点设置为DataTemplate,如果CurrentItem属性发生更改(并且实例化了新模板),焦点也会丢失(FocusManager.GetFocussedElement返回null)。
如何将键盘焦点设置为ContentPresenter更改时的内容?
答案 0 :(得分:0)
我相信您可以在ContentControl或ContentPresenter上使用LayoutUpdated事件。这应该在Content / ContentTemplate / etc更改时随时触发。
或者,您可以从ContentControl派生一个类,然后覆盖OnContentChanged,OnContentTemplateChanged等方法。然后,您需要向下搜索可视树并设置焦点。您可能需要使用Dispatcher来延迟焦点设置代码。