找回密码
 立即注册

QQ登录

只需一步,快速开始

来爱清
论坛元老   /  发表于:2014-10-17 10:50  /   查看:15502  /  回复:12
请问,C1DataGrid在MVVM模式里的MouseLeftButtonDown左击事件为什么无法被触发,但是MouseRightButtonDown右键事件,MouseLeftButtonUp能被触发
如以下代码:
<i:Interaction.Triggers>
       <i:EventTrigger EventName="MouseLeftButtonDown">
            <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" CommandParameter="{Binding SelectedItems,ElementName=userDataGrid}"/>
       </i:EventTrigger>
</i:Interaction.Triggers>

补充:目前使用MvvmLight框架的command方式来进行行为绑定,下面是ViewModel 的定义的command,参数接收DataGrid的SelectedItems属性参数,即是当前选中的行数据集合参数

public RelayCommand<IList> SelectionChangedCommand
{
            get
            {
                return new RelayCommand<IList>
                    (
                        (SelectedItems) =>
                            {
                                var selectedItemsCount = SelectedItems.Count;
                            }
                    );
            }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

12 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-10-17 11:28:00
沙发
回复 1楼来爱清的帖子

你的前台代码已经看到了。
请问你使用WPF中的EventTrigger和命令绑定,你的Behavior部分的内容是怎样实现的?还有能否将VM部分的代码发上来,我们来分析下问题产生的原因。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
来爱清
论坛元老   /  发表于:2014-10-17 14:09:00
板凳
回复 2楼Alice的帖子

在1楼已补充VM部分代码,请看看,谢谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-17 15:19:00
地板
回复 3楼来爱清的帖子

MouseLeftButtonDownEvent需要添加Handler才能触发。代码参考:
  1. this.c1DataGrid.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(grid_MouseLeftButtonDown), handledEventsToo: true);
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
来爱清
论坛元老   /  发表于:2014-10-17 16:38:00
5#
回复 3楼来爱清的帖子

MouseLeftButtonDownEvent需要添加Handler才能触发。代码参考:
[code]this.c1Data
Alice 发表于 2014-10-17 15:19:00


上面代码怎么和EventTrigger与命令绑定结合使用的,我试了都不成功
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-17 17:07:00
6#
回复 5楼来爱清的帖子

这个事件是被内部截获,在WPF下用AddHandle触发。如果在MVVM下使用,必须自定义路由事件,这是一个绕路的解决方案。
请问你用这个事件具体是做什么事情的,即你的需求是什么,我们看看能不能寻找其他更好的解决方案。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
来爱清
论坛元老   /  发表于:2014-10-20 10:17:00
7#
回复 6楼Alice的帖子

有个需求是在列表的某行任意地方点击之后复选框同时被选中的效果,我看过基于事件的复选框选中的例子,但没看到基于MVVM的例子,起初尝试用了SelectionChanged事件,每次行选中同时修改复选框的状态,然后通过RaisePropertyChanged方式更新C1DataGrid的界面列表数据,在这过程中发现每次使用RaisePropertyChanged方式更新界面,就会多次自动触发了C1DataGrid的SelectionChanged事件,我不想让它那样做,所以考虑改用MouseLeftButtonDown事件,请问有什么更好的处理方式吗
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-20 14:33:00
8#
回复 7楼来爱清的帖子

不好意思回复慢了。
MouseLeftButtonDown目前是被内部截获了,所以无法触发出来。
现在我正在查阅相关文档,寻找方案。
我需要根据你的需求,重新研究一个合适的解决方案,能否提供你的Demo,以便我们快速的帮助你定位和解决问题。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
来爱清
论坛元老   /  发表于:2014-10-20 19:58:00
9#
回复 9楼Alice的帖子

目前尝试替代的事件是用MouseLeftButtonUp事件,这个可以触发
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-10-21 09:30:00
10#
回复 10楼来爱清的帖子

很抱歉给你带来不便。
这也是一种替代的解决方案。如果你在使用这个方案的过程中,遇到没有预想到的问题,请继续提出来,我们沟通解决。
有关MouseLeftButtonDown这个问题,我会反馈到产品组。

评分

参与人数 1满意度 +5 收起 理由
来爱清 + 5 谢谢提供帮助与支持

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部