Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 当ContentPresenter的内容发生更改时,如何将键盘焦点设置为该内容?_Wpf - Fatal编程技术网

Wpf 当ContentPresenter的内容发生更改时,如何将键盘焦点设置为该内容?

Wpf 当ContentPresenter的内容发生更改时,如何将键盘焦点设置为该内容?,wpf,Wpf,我的视图中有一个ContentControl,它被数据绑定到我的viewmodel的CurrentItem属性。通过CurrentItem公开的对象都有自己的DataTemplate 当CurrentItem属性更改时,将按原样显示该项的相应DataTemplate。但是,我无法找到将键盘焦点设置为DataTemplate内容的方法 即使我手动将键盘焦点设置为DataTemplate,如果CurrentItem属性更改(并且实例化了新模板),焦点也会丢失(FocusManager.GetFocu

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

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

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

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

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

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