1. 在ViewModel中弹出消息提示框,需要添加下面的代码块:

    <dxmvvm:Interaction.Behaviors>
<dx:DXMessageBoxService />
</dxmvvm:Interaction.Behaviors>

在ViewModel中的调用方式是:

        public virtual void ShowRowDetails(SampleData obj)
{
MessageBoxService.Show(obj.ToString(), "Row Details");
}

2. 将鼠标双击事件绑定到ViewModel中的 ShowRowDetails 的方式是:

<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="MouseDoubleClick"
Command="{Binding ShowRowDetailsCommand}"
PassEventArgsToCommand="True">
<dxmvvm:EventToCommand.EventArgsConverter>
<dx:EventArgsToDataRowConverter/>
</dxmvvm:EventToCommand.EventArgsConverter>
</dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>

注意: 在xaml 代码中的命令带Command后缀,在ViewModel中不需要。

<UserControl x:Class="EventToCommandExample.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:ViewModels="clr-namespace:EventToCommandExample.ViewModels"
xmlns:localConverters="clr-namespace:EventToCommandExample.Converters"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="600"
DataContext="{dxmvvm:ViewModelSource Type={x:Type ViewModels:MainViewModel}}">
<dxmvvm:Interaction.Behaviors>
<dx:DXMessageBoxService />
</dxmvvm:Interaction.Behaviors>
<Grid>
<Grid.Resources>
<localConverters:ReviewResultRowBackColorConverter x:Key="reviewResultRowBackColorConverter"></localConverters:ReviewResultRowBackColorConverter>
<localConverters:String2BoolConverter x:Key="string2BoolConverter"></localConverters:String2BoolConverter>
<Style x:Key="optimizedRowStyle" TargetType="{x:Type dxg:RowControl}">
<Setter Property="Background" Value="{Binding Row.Mandatory, Converter={StaticResource reviewResultRowBackColorConverter}}"/>
</Style>
<Style x:Key="barButtonItemStyle" TargetType="dxb:BarButtonItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Row.Row.Mandatory,Converter={StaticResource string2BoolConverter}}" Value="false">
<Setter Property="IsVisible" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<dx:DXTabControl>
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="SelectionChanged"
Command="{Binding SelectedTabIndexChangedCommand}"
PassEventArgsToCommand="True">
</dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
<dx:DXTabItem Header="Test">
<dxg:GridControl ItemsSource="{Binding GridData}" AutoGenerateColumns="AddNew">
<dxg:GridControl.Columns>
<dxg:GridColumn Header="ID" FieldName="ID"></dxg:GridColumn>
<dxg:GridColumn Header="Text" FieldName="Text"></dxg:GridColumn>
<dxg:GridColumn Header="Value" FieldName="Value"></dxg:GridColumn>
<dxg:GridColumn Header="Mandatory" FieldName="Mandatory"></dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView x:Name="tvTable" RowStyle="{StaticResource optimizedRowStyle}">
<dxg:TableView.RowCellMenuCustomizations>
<dxb:BarButtonItem Content="DB Owner"
Command="{Binding Path=(dxg:DataControlBase.ActiveView).DataContext.SetTableDataHeaderCommand, RelativeSource={RelativeSource Self}}"
CommandParameter="{Binding ElementName=tvTable, Path=FocusedRowHandle}"
dxb:BarManager.ShowGlyphsInPopupMenus="False"
Style="{StaticResource barButtonItemStyle}">
</dxb:BarButtonItem>
<dxb:BarButtonItem Content="Table Name" IsVisible="{Binding Row.Row.Mandatory,Converter={StaticResource string2BoolConverter}}"
Command="{Binding Path=(dxg:DataControlBase.ActiveView).DataContext.SetTableDataHeaderCommand, RelativeSource={RelativeSource Self}}"
CommandParameter="{Binding ElementName=tvTable, Path=FocusedRowHandle}">
</dxb:BarButtonItem>
<dxb:BarButtonItem Content="DataHeader"
Command="{Binding Path=(dxg:DataControlBase.ActiveView).DataContext.SetTableDataHeaderCommand, RelativeSource={RelativeSource Self}}"
CommandParameter="{Binding ElementName=tvTable, Path=FocusedRowHandle}">
</dxb:BarButtonItem>
<dxb:BarButtonItem Content="DataBegin"
Command="{Binding Path=(dxg:DataControlBase.ActiveView).DataContext.SetTableDataBeginCommand, RelativeSource={RelativeSource Self}}"
CommandParameter="{Binding ElementName=tvTable, Path=FocusedRowHandle}">
</dxb:BarButtonItem>
</dxg:TableView.RowCellMenuCustomizations>
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="MouseDoubleClick"
Command="{Binding ShowRowDetailsCommand}"
PassEventArgsToCommand="True">
<dxmvvm:EventToCommand.EventArgsConverter>
<dx:EventArgsToDataRowConverter/>
</dxmvvm:EventToCommand.EventArgsConverter>
</dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</dx:DXTabItem>
<dx:DXTabItem Header="Testtab">
<dxg:GridControl ItemsSource="{Binding GridData}" AutoGenerateColumns="AddNew">
<dxg:GridControl.View>
<dxg:TableView>
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="MouseDoubleClick"
Command="{Binding ShowRowDetailsCommand}"
PassEventArgsToCommand="True">
<dxmvvm:EventToCommand.EventArgsConverter>
<dx:EventArgsToDataRowConverter/>
</dxmvvm:EventToCommand.EventArgsConverter>
</dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</dx:DXTabItem>
</dx:DXTabControl>
</Grid>
</UserControl>

完整实例下载

WPF 事件实现MVVM中的Command绑定的更多相关文章

  1. WPF中的Command事件绑定

    在项目中使用Command绑定能够使我们的代码更加的符合MVVM模式.不了解的同学可能不清楚,只有继承自ButtonBase类的元素才可以直接绑定Command(Button.CheckBox.Rad ...

  2. WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参

    原文:WPF ContextMenu 在MVVM模式中绑定 Command及使用CommandParameter传参 ContextMenu无论定义在.cs或.xaml文件中,都不继承父级的DataC ...

  3. 游戏框架设计中的。绑定binding。。。命令 command 和消息message 以及MVVM

    游戏框架设计中的.绑定binding...命令 command 和消息message

  4. wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!

    昨天在mvvm wpf的开发中遇到一个问题,绑定不起作用,编辑阶段没问题也没有提示找不到对应的绑定,但是在运行之后却不起作用,查了很多资料,说法不一,有些是要删除datagrid的一行,直接绑定del ...

  5. WPF Prism MVVM 中 弹出新窗体. 放入用户控件

    原文:WPF Prism MVVM 中 弹出新窗体. 放入用户控件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_37214567/artic ...

  6. WPF中DatePiker值绑定以及精简查询

    WPF中DatePiker值绑定以及精简查询 1.WPF中DatePiker值绑定 Xaml中值绑定使用Text <DatePicker Text="{Binding strMinDa ...

  7. 总结:WPF中模板需要绑定父级别的ViewModel该如何处理

    原文:总结:WPF中模板需要绑定父级别的ViewModel该如何处理 <ListBox ItemsSource="{Binding ClassCollection}"> ...

  8. .NET CORE(C#) WPF简单菜单MVVM绑定

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF简单菜单MVVM绑定 阅读导航 本文背景 代码实现 本文参考 ...

  9. jquery中取消和绑定hover事件的正确方式

    在网页设计中,我们经常使用jquery去响应鼠标的hover事件,和mouseover和mouseout事件有相同的效果,但是这其中其中如何使用bind去绑定hover方法呢?如何用unbind取消绑 ...

  10. WPF 列表控件中的子控件上下文绑定

    <DataGrid Grid.ColumnSpan=" Height="Auto" SelectedItem="{Binding Path=SelectP ...

随机推荐

  1. 从零开始学java(第二天)

    ------------恢复内容开始------------ 今天是学习了一些基础的知识 1.注释 //行注释 /*多行注释*/ /**文档注释*/ 2.标识符和关键字 标识符就是名字,类名方法名变量 ...

  2. Konva.js

    1.前言 简介:Konva.js - 适用于桌面/移动端应用的 HTML5 2d canvas 库 个人体验:原生的canvas只支持绘制基本的直线,矩形,文字,图片,扇形等,如果要支持更复杂的功能, ...

  3. LeetCode题集-5 - 最长回文子串之马拉车(二)

    书接上回,我们今天继续来聊聊最长回文子串的马拉车解法. 题目:给你一个字符串 s,找到 s 中最长的回文子串. 01.中心扩展法优化-合并奇偶处理 俗话说没有最好只有更好,看着O(n^2)的时间复杂度 ...

  4. element-ui el-dialog中套el-dialog被遮罩遮盖的问题

    添加 append-to-body 属性 具体见官方文档 入口

  5. 从FTP到Feem:文件传输技术的革新

    Feem是一个开源的文件传输协议,旨在提供高效.安全.快速的文件传输服务.与传统的FTP和HTTP协议相比,Feem具有许多优势,如支持任意大小的文件传输.支持实时传输和断点续传等. Feem_v4. ...

  6. JAVA开发规范v1.0

    01-中铜国贸JAVA开发规范v1.0 一.编程规约 (一)命名风格 [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例:_name / _name / $Obje ...

  7. Premiere剪辑加速

    使用AE或者Premire的时候,如果需要导出文件,有的文件还是挺大的,处理起来疯狂占用CPU,经常导致别的工作无法进行. 如果能够使用GPU进行压缩工作就好了,如果你用一块独立显卡,那么就可以正常使 ...

  8. Slate文档编辑器-TS类型扩展与节点类型检查

    Slate文档编辑器-TS类型扩展与节点类型检查 在之前我们基于slate实现的文档编辑器探讨了WrapNode数据结构与操作变换,主要是对于嵌套类型的数据结构类型需要关注的Normalize与Tra ...

  9. Selenium 自动化浏览器,解决懒加载的网页获取问题

    Selenium 自动化浏览器,解决懒加载的网页获取问题.可以用于爬虫这些 在使用 Selenium WebDriver 进行自动化测试时,可以通过设置日志级别来控制输出的日志信息.在 C# 中,可以 ...

  10. 即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术

    本文由融云技术团队分享,原题"互联网通信安全之端到端加密技术",内容有较多修订和改动. 1.引言 在上篇<IM聊天系统安全手段之通信连接层加密技术>中,分享了关于通信连 ...