如何将焦点设置为没有事件处理程序的TextBox

时间:2011-06-30 06:36:33

标签: wpf xaml mvvm textbox focus

我希望HyperLink.Click事件集TextBox.IsFocused为true。我正在使用mvvm,我很想避免在我的View中出现任何代码隐藏,因此我在寻找没有HyperLink.Click事件的事件处理程序的解决方案。我需要设计Commmand,但属性IsFocusedIsKeyboardFocusedIsKeyboardFocusWithin只是读取...所以我找到了解决方案 - 我可以设置CommandParameter={Binding ElementName=MyTextBox}。但这样我的ICommand实现可以反转UI元素。是否可以使用MVVM模式将UI元素作为CommandParameter获取?如果没有View代码隐藏,还有另一种方法可以实现吗?

1 个答案:

答案 0 :(得分:2)

创建附加行为以将焦点设置在UIElement上。 see here on how to create behaviors

使AttachedBehavior绑定到AssociatedObject的Viewmodel中的IsFocued属性。

每当viewmodel将IsFocused属性更改为true(通过viewmodel中的某个命令)时,附加行为将通过数据绑定来了解并在UIElement中调用Focus()。