如何将UI Controls事件绑定到ViewModel(MVVM)?

时间:2011-04-07 04:44:14

标签: c# silverlight silverlight-4.0 mvvm viewmodel

我的应用程序中有AutoCompleteBox,我已将其ItemSource / SelectedItem属性绑定到ViewModel。

现在我想绑定事件并且我没有得到用ViewModel绑定AutoCompeletBox KeyUP / KeyDown事件的方法我如何实现它?

我在应用程序中有一个Button,我使用了RelayCommand来绑定该按钮的Command(它正在工作)。

你能否详细说明约束力?

2 个答案:

答案 0 :(得分:1)

如果您使用的是GalaSoft MVVM工具包,则可以使用EventToCommand将KeyUp事件绑定到命令。请在此处查看 - http://geekswithblogs.net/lbugnion/archive/2009/11/05/mvvm-light-toolkit-v3-alpha-2-eventtocommand-behavior.aspx

您可能还想将自动完成框的绑定表达式中的UpdateSourceTrigger属性更改为“Property Changed”

Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}"

默认绑定行为是在LostFocus上,因此这将立即更新您的ViewModel。

答案 1 :(得分:0)

KeyUp / KeyDown事件处理应该是View实现的一部分。然后,您可以在View中创建逻辑,该逻辑将使用绑定或命令从ViewModel获取相关的自动完成值。

在任何纯粹主义者之前,谁认为所有逻辑都应该在虚拟机中开始低估。我相信绑定到View的逻辑应该保持在View中。