【问题标题】:How to bind UI Controls event to ViewModel(MVVM)?如何将 UI 控件事件绑定到 ViewModel(MVVM)?
【发布时间】:2011-04-07 04:44:13
【问题描述】:

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

现在我想绑定事件,但我没有办法将 AutoCompeletBox KeyUP/KeyDown 事件与 ViewModel 绑定我如何实现它?

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

能否请您给我详细的绑定示例?

【问题讨论】:

    标签: c# silverlight silverlight-4.0 mvvm viewmodel


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您好 NJerbert 我没有使用任何工具包。
    • 您能否使用任何来源更新您的问题,以帮助进一步说明您尝试将事件绑定到什么?
    【解决方案2】:

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

    在任何认为所有逻辑都应该在 VM 中的纯粹主义者开始投反对票之前。我相信与 View 绑定的逻辑应该留在 View 中。

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 2011-12-17
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      相关资源
      最近更新 更多