【问题标题】:setting the focus in one user control based on an action in another user control根据另一个用户控件中的操作在一个用户控件中设置焦点
【发布时间】:2010-06-30 02:35:11
【问题描述】:

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

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

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

干杯,
浆果

我应该指出,作为将焦点移到文本框的触发器的 EditCommand 位于绑定到列表用户控件的视图模型中。不过,我不介意为 ui 问题提供代码。

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

【问题讨论】:

  • 当按钮被点击时调用textBoxName.Focus()怎么样?

标签: wpf focus focusmanager


【解决方案1】:

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

【讨论】:

【解决方案2】:

好吧,可能还有其他方法可以做到这一点,但是因为我在问题中提到的Josh Smith solution 使用了数据绑定框架本身,所以它与 MVVM 一起使用是不费吹灰之力的。不用胡乱摆弄视觉树,也不要试图用嵌套控件来扭曲你的思维 - 简单、优雅,而且最重要的是它的工作原理!

BH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2015-08-03
    • 2016-01-21
    • 1970-01-01
    相关资源
    最近更新 更多