如何从ViewModel中为TextBox提供焦点并选择文本

时间:2009-05-30 23:06:45

标签: wpf mvvm textbox focus

我正在一个简单的WPF应用程序环境中试验MVVM。我有一个按钮附加命令。如果TextBox中的文本“不正确”,我希望TextBox获得焦点并选择所有内容。似乎唯一的方法是通过从我的ViewModel中的Command到View的某种直接调用,或者设置ViewModel触发并且View监听的某种事件。从那里,视图可以直接调用有问题的TextBox。

我试图保持MVVM的解耦性质,但似乎我无法在XAML中以声明方式获取此行为,或者直接在ViewModel中直接获取此行为,而不至少间接与View交谈(或者界面或事件)。我还必须在ViewModel中保存对View的引用。

这里的“最佳实践”是什么,以及在“真正的”MVVM应用程序中真正应该来自ViewModels的视图是如何解耦的?

2 个答案:

答案 0 :(得分:1)

它的代码与UI的控件直接相关,因此我认为在这种情况下,View的代码隐藏是它所属的位置。您可能想要设置事件或类似的事情。这样它仍然像以前一样解耦 - 视图知道viewmodel无论如何,你只需要在代码隐藏中添加几行代码。

答案 1 :(得分:0)

我遇到了同样的问题,我所做的是制作一个自定义文本框,并从该控件中公开依赖属性。

与焦点一样,选择所有文本并将这些属性绑定到视图模型。