我希望HyperLink.Click
事件集TextBox.IsFocused
为true。我正在使用mvvm,我很想避免在我的View中出现任何代码隐藏,因此我在寻找没有HyperLink.Click事件的事件处理程序的解决方案。我需要设计Commmand
,但属性IsFocused
,IsKeyboardFocused
,IsKeyboardFocusWithin
只是读取...所以我找到了解决方案 - 我可以设置CommandParameter={Binding ElementName=MyTextBox}
。但这样我的ICommand实现可以反转UI元素。是否可以使用MVVM模式将UI元素作为CommandParameter
获取?如果没有View代码隐藏,还有另一种方法可以实现吗?
答案 0 :(得分:2)
创建附加行为以将焦点设置在UIElement上。 see here on how to create behaviors
使AttachedBehavior绑定到AssociatedObject的Viewmodel中的IsFocued属性。
每当viewmodel将IsFocused属性更改为true(通过viewmodel中的某个命令)时,附加行为将通过数据绑定来了解并在UIElement中调用Focus()。