2010-06-30 64 views
0

一个用户控件是一个列表框,列表中的每个项目都有一个按钮。单击该按钮时,有关该项目的可编辑细节将显示在另一个用户控件中。细节知道要显示什么以及如何通过数据绑定到视图模型来显示它。两个用户控件都在同一个窗口中。根据另一个用户控件中的操作将焦点设置在一个用户控件中

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

我见过一个解决方案here,涉及到编写标记扩展。不过现在也有点老了,我想知道是否有更简单的方法来做到这一点。

干杯,
Berryl

我应该指出,这是获得焦点的文本框中触发EditCommand是绑定到上市用户控制视图模型。尽管如此,我并不介意让代码隐藏起来。

更新 这是Josh Smith最近的nifty post,它解决了这个意图的一部分;能够通过ViewModel控制焦点。

+0

如何在点击按钮时调用'textBoxName.Focus()'? – Jay 2010-06-30 03:53:47

回答

0

好吧,可能还有其他方法可以做到这一点,但因为我在我的问题提到了Josh Smith solution使用数据绑定框架本身,它与MVVM一起使用是没有道理的。不要随意使用视觉树或试图在嵌套控件上扭曲你的思维 - 简单,优雅,并且最棒的是它的工作原理!

BH

1

您可以使用VisualTreeHelper找到具体的文本框控件,并尝试textboxcontrol.Focus()

+0

我对VisualTreeHelper类不熟悉,但听起来很有用(这是wpf和silverlight的框架类吗?)。不知道在这种情况下,以及视图模型中的EditCommand如何使用它。你能理解这个吗? – Berryl 2010-06-30 14:22:41

+0

我不认为EditCommand设置了重点。请参阅以下链接 http://stackoverflow.com/questions/636383/wpf-ways-to-find-controls http://www.codeproject.com/KB/WPF/WpfElementTrees.aspx – Ragunathan 2010-07-01 05:10:10

相关问题