Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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 基于另一个用户控件中的操作在一个用户控件中设置焦点_Wpf_Focus_Focusmanager - Fatal编程技术网

Wpf 基于另一个用户控件中的操作在一个用户控件中设置焦点

Wpf 基于另一个用户控件中的操作在一个用户控件中设置焦点,wpf,focus,focusmanager,Wpf,Focus,Focusmanager,一个用户控件是一个列表框,列表中的每个项都有一个按钮。单击按钮时,有关该项目的可编辑详细信息将显示在另一个用户控件中。详图知道要显示什么以及如何通过与视图模型的数据绑定来显示。两个用户控件位于同一窗口中 我在这里发现的难题是将焦点设置为第一个非只读文本框 我见过一个解决方案,其中包括编写标记扩展。不过现在它也有点旧了,我想知道是否有更简单的方法来做到这一点 干杯, 贝里尔 我应该指出,EditCommand是获取文本框焦点的触发器,它位于绑定到列表用户控件的视图模型中。不过,我并不介意为ui问题

一个用户控件是一个列表框,列表中的每个项都有一个按钮。单击按钮时,有关该项目的可编辑详细信息将显示在另一个用户控件中。详图知道要显示什么以及如何通过与视图模型的数据绑定来显示。两个用户控件位于同一窗口中

我在这里发现的难题是将焦点设置为第一个非只读文本框

我见过一个解决方案,其中包括编写标记扩展。不过现在它也有点旧了,我想知道是否有更简单的方法来做到这一点

干杯,
贝里尔

我应该指出,EditCommand是获取文本框焦点的触发器,它位于绑定到列表用户控件的视图模型中。不过,我并不介意为ui问题编写代码

更新
这是乔什·史密斯最近的一篇文章,阐述了其中的部分意图;能够通过ViewModel控制焦点。

您可以使用VisualTreeHelper找到特定的textbox控件,然后尝试textboxcontrol.focus()

好的,可能还有其他方法可以做到这一点,但因为我在问题中提到的使用数据绑定框架本身,所以它与MVVM一起使用是一个简单的方法。不要在可视化树上乱搞,也不要试图在嵌套控件上绞尽脑汁——简单、优雅,而且最有效


BH

单击按钮时调用
textBoxName.Focus()
如何?我不熟悉VisualTreeHelper类,但听起来确实很有用(这是wpf和silverlight的框架类吗?)。不确定在这种情况下它会在哪里,以及视图模型中的EditCommand如何使用它。这对你有意义吗?我不认为EditCommand可以设置焦点。请参阅以下链接