使用 InvokeCommandAction MVVM 传递参数
passing argument with InvokeCommandAction MVVM
我想根据某些业务逻辑禁用 cell/Column。我正在使用 ShowingEditor
事件和 ShowingEditorEventArgs
来取消它。传递 ShowingEditorEventArgs
将是 excellent.I 我能够将完整的网格作为参数传递。使用下面的代码。但我只想传递 ShowingEditorEventArgs
的选定 cell.May 是一些相关的资源绑定帮助我在这里。
<dxg:GridControl x:Name="grid" >
<dxg:GridControl.View>
<dxg:TableView Name="view" ShowingEditor="view_ShowingEditor">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ShowingEditor">
<i:InvokeCommandAction Command="{Binding ShowingEditorCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type dxg:GridControl}}}" />
...
注:
- 我不能使用 MVVM light(GalaSoft).
交互没有给我 CallMethodAction。
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
<ei:CallMethodAction
我不想传递ViewModel
的绑定属性(例如SelectedItem
)
- 使用 DevExpress GridControl
考虑使用 DevExpress MVVM 框架,您可以在其中将事件参数作为参数传递给视图模型:
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="ShowingEditor" Command="{Binding ShowingEditorCommand}" PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
或者甚至在使用 EventArgsConverter 指定的转换器将 EventArgs 对象传递给您的命令之前转换它 属性。
查看 EventToCommand 文章了解更多信息。
P.S。如果您出于某种原因无法使用 DevExpress MVVM 框架,this post 描述了如何实现自定义 TriggerAction 手动将事件参数传递给命令。
我想根据某些业务逻辑禁用 cell/Column。我正在使用 ShowingEditor
事件和 ShowingEditorEventArgs
来取消它。传递 ShowingEditorEventArgs
将是 excellent.I 我能够将完整的网格作为参数传递。使用下面的代码。但我只想传递 ShowingEditorEventArgs
的选定 cell.May 是一些相关的资源绑定帮助我在这里。
<dxg:GridControl x:Name="grid" >
<dxg:GridControl.View>
<dxg:TableView Name="view" ShowingEditor="view_ShowingEditor">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ShowingEditor">
<i:InvokeCommandAction Command="{Binding ShowingEditorCommand}" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type dxg:GridControl}}}" />
... 注:
- 我不能使用 MVVM light(GalaSoft).
交互没有给我 CallMethodAction。
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" <ei:CallMethodAction
我不想传递
ViewModel
的绑定属性(例如SelectedItem
)- 使用 DevExpress GridControl
考虑使用 DevExpress MVVM 框架,您可以在其中将事件参数作为参数传递给视图模型:
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="ShowingEditor" Command="{Binding ShowingEditorCommand}" PassEventArgsToCommand="True" />
</dxmvvm:Interaction.Behaviors>
或者甚至在使用 EventArgsConverter 指定的转换器将 EventArgs 对象传递给您的命令之前转换它 属性。
查看 EventToCommand 文章了解更多信息。
P.S。如果您出于某种原因无法使用 DevExpress MVVM 框架,this post 描述了如何实现自定义 TriggerAction 手动将事件参数传递给命令。