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. Lambda【1】-- List相关Lambda表达式使用(上篇)

    Lambda在jdk1.8里面已经很好用了,在这里不讲底层的实现,只有简单的用法,会继续补全. 首先一个list我们要使用lambda的话,需要使用它的stream()方法,获取流,才能使用后续的方法 ...

  2. 如何在 Epicor 中计算绩效

    制造性能是任何生产工序的关键,允许企业衡量和评估其效率和生产力水平. 我们将探讨如何在 Epicor 中计算制造性能.计算整体设备效率(OEE) 时性能指标的价值.如何解释制造指标以及在 Epicor ...

  3. CTF中RSA相关题型总结(持续更新)

    e很小时: import gmpy2 from functools import reduce from Crypto.Util.number import long_to_bytes def CRT ...

  4. Winform在主窗体里切换多个窗体

    1.点击解决方案资源管理器的项目名称,右键添加用户控件(Windows窗体). 2.在主窗体代码中实例化添加的用户控件(Windows窗体). 点击查看代码 UserControl1 userCont ...

  5. NFS服务搭建过程

    NFS服务 [1].nfs配置 作用: 解决数据一致性问题 NFS服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的NFS客户端(共享权限参数)格式书写,定义要共享的 ...

  6. Java并发 —— 线程并发(二)

    Java 锁  Java 中的锁是在多线程环境下,保证共享资源健康,线程安全的一种手段  线程操作某个共享资源之前,先对资源加一层锁,保证操作期间没有其他线程访问资源,操作完成后再释放锁 保持数据一致 ...

  7. Asp.net MVC,屏蔽类属性

    将一个类序列化成JSON或XML时,如果某个字段或属性不想被序列化,一般可以使用以下注解: 1.[Newtonsoft.Json.JsonIgnore]特性:使用Newtonsoft.Json序列化时 ...

  8. JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升

    作为一位前端开发者,我们经常会听到这么一句话:"JavaScript的执行是按照顺序自上而下依次执行的."这句话说的并没有错.但是它似乎又好像不完全对.我们先来看以下这段代码.你觉 ...

  9. 中电金信:从“互联网+”到“人工智能+”,TA也藏不住了!

    ​ 两会期间,人工智能频上头条 其中"人工智能+"首次进入2024政府工作报告 为人工智能产业的发展注入一剂强心针   从"互联网+"到"人工智能+& ...

  10. k8s备份恢复实践--velero

    k8s备份恢复实践--velero 使用Velero备份k8资源到minio,阿里云oss,七牛云Kodo 环境linux + kubectl #1.velero简介 Velero是用于Kuberne ...