Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVVM中如何绑定鼠标双击命令

MVVM中如何绑定鼠标双击命令

提问于 2018-01-29 16:22:52
回答 2关注 0查看 701

我希望在viewmodel文件中有一个方法,并将其绑定如下:

代码语言:txt
AI代码解释
复制
<ListView ... MouseDoubleClick="{Binding myfunction}"> 

谢谢

回答 2

特殊枪的潘鬼鬼

发布于 2018-01-30 02:06:31

可以这样:

代码语言:txt
AI代码解释
复制
namespace Behavior
{
public class MouseDoubleClick
{
    public static DependencyProperty CommandProperty =
        DependencyProperty.RegisterAttached("Command",
        typeof(ICommand),
        typeof(MouseDoubleClick),
        new UIPropertyMetadata(CommandChanged));

    public static DependencyProperty CommandParameterProperty =
        DependencyProperty.RegisterAttached("CommandParameter",
                                            typeof(object),
                                            typeof(MouseDoubleClick),
                                            new UIPropertyMetadata(null));

    public static void SetCommand(DependencyObject target, ICommand value)
    {
        target.SetValue(CommandProperty, value);
    }

    public static void SetCommandParameter(DependencyObject target, object value)
    {
        target.SetValue(CommandParameterProperty, value);
    }
    public static object GetCommandParameter(DependencyObject target)
    {
        return target.GetValue(CommandParameterProperty);
    }
    private static void CommandChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
    {
        Control control = target as Control;
        if (control != null)
        {
            if ((e.NewValue != null) && (e.OldValue == null))
            {
                control.MouseDoubleClick += OnMouseDoubleClick;
            }
            else if ((e.NewValue == null) && (e.OldValue != null))
            {
                control.MouseDoubleClick -= OnMouseDoubleClick;
            }
        }
    }
    private static void OnMouseDoubleClick(object sender, RoutedEventArgs e)
    {
        Control control = sender as Control;
        ICommand command = (ICommand)control.GetValue(CommandProperty);
        object commandParameter = control.GetValue(CommandParameterProperty);
        command.Execute(commandParameter);
    }
}
}

在XAML中:

代码语言:txt
AI代码解释
复制
 <ListBox Behavior:MouseDoubleClick.Command="{Binding ....}"
          Behavior:MouseDoubleClick.CommandParameter="{Binding ....}"/>

晓小峰哦

发布于 2018-01-30 00:33:03

代码如下:

代码语言:txt
AI代码解释
复制
    <ListView ItemsSource="{Binding Model.TablesView}"   Grid.Row="1" 
              SelectedItem="{Binding Model.SelectedTable, Mode=TwoWay}"  >
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=.}" 
                   Width="{Binding Path=ActualWidth, 
                             RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
                    <TextBlock.InputBindings>
                        <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DataContext.MoveItemRightCommand,
                                        RelativeSource={RelativeSource FindAncestor, 
                                        AncestorType={x:Type UserControl}}}"
                                      CommandParameter="{Binding .}"/>
                    </TextBlock.InputBindings>
                </TextBlock>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
和开发者交流更多问题细节吧,去 写回答
相关文章
鼠标双击测试器_鼠标测试软件怎么用
点击鼠标左键然后在按钮内移动,正常来说是数字加一,如果数字加了一以上,就说明鼠标出现了双击,
全栈程序员站长
2022/11/10
2.2K0
鼠标双击测试器_鼠标测试软件怎么用
Extjs mvvm store绑定
view ... viewModel: { type: 'view1.mainviewmodel' }, ... bind:{ store: '{store1}' } view model stores: { store1: { ... } }
路过君
2020/06/19
6970
Excel中鼠标双击的妙用,你可能需要知道
如果你有多个单元格需要应用相同的格式,可以先选择想要复制其格式的单元格,双击功能区“开始”选项卡“剪贴板”组中的“格式刷”,然后在需要应用格式的单元格中单击,如下图1所示。
fanjy
2022/06/04
1.5K0
Excel中鼠标双击的妙用,你可能需要知道
鼠标双击响应的实现「建议收藏」
在Windows平台上,鼠标左键的按下、松开、快速的两次点击会产生WM_LBUTTONDOWN、WM_LBUTTONUP和WM_LBUTTONDBLCLK消息,但是Windows根据什么来区分连续的两次鼠标按键操作,是两次独立的单击,还是一次双击呢?最近在解决一个问题时,通过使用Spy++和查阅MSDN,弄清楚了这个问题。简单总结如下: Windows根据两个条件来做这个区分: (1)双击的时间间隔 这是很容易想到的。更准确的说法是这样的,两次单击会产生四个鼠标点击消息,如果第三个消息(第二次按下)和第二个消息(第一次弹起引发的WM_LBUTTONUP)间隔短于指定值,则把第三个消息处理成WM_LBUTTONDBLCLK消息;第四个消息照旧,WM_LBUTTONUP。 这个指定的时间间隔,在Windows XP SP2上缺省是0.5秒,其他操作系统可能相同。通过::GetDoubleClickTime调用可以得到这个值。 这个值是可以设置的。有两种方法设置这个值: ::SetDoubleClickTime调用,或者以SPI_SETDOUBLECLICKTIME为第一个参数调用::SystemParametersInfo。设置的结果对系统中其他的应用程序也起作用。 (2)两次鼠标击点的空间距离 在第一次点击时,Windows以击点为中心,检测一个矩形区域,如果第二次点击不落在这个区域内,那就不把第三个消息算作WM_LBUTTONDBLCLK消息。 这个矩形区域的缺省大小,在Windows XP SP2上缺省是4pt×4pt。可以以SM_CXDOUBLECLK或SM_CYDOUBLECLK为参数调用::GetSystemMetrics得到。 这个值也是可以设置的。设置的方法是通过SPI_SETDOUBLECLKWIDTH或SPI_SETDOUBLECLKHEIGHT为第一个参数来调用::SystemParametersInfo。设置的结果对系统中其他的应用程序也起作用。
全栈程序员站长
2022/11/09
8750
WPF 列表右键菜单比较符合 MVVM 的命令绑定方法
群里小伙伴问我如何在 ListView 的右击的时候知道右击的是哪一项,他想要获取对应的行信息。他使用的是 GridView 做的,于是我告诉他需要自己写 ItemContainerStyle 在 GridViewRowPresenter 里添加右键的逻辑。但是这样写不清真,我问到了他的本质问题其实只是想要做右键菜单。刚好我在写一个测试应用,用于测试我的文件下载库,此时需要用到在右击某一个下载项的时候,拿到当前下载项的信息,给出右键菜单。我不使用小伙伴的逻辑,就按照我自己会采用的写法,我认为这样写比较符合 WPF 框架的设计,下面让我告诉大家我的用法,十分简单
林德熙
2020/07/28
3.3K0
MVVM 框架解析之双向绑定
更好的阅读体验,点击 原文地址 项目地址 MVVM 框架 近年来前端一个明显的开发趋势就是架构从传统的 MVC 模式向 MVVM 模式迁移。在传统的 MVC 下,当前前端和后端发生数据交互后会刷新整
牧云云
2018/05/02
2.1K1
MVVM 框架解析之双向绑定
剖析Vue原理&实现双向绑定MVVM
本文能帮你做什么? 1、了解vue的双向数据绑定原理以及核心代码模块 2、缓解好奇心的同时了解如何实现双向绑定 为了便于说明原理与实现,本文相关代码主要摘自vue源码, 并进行了简化改造,相对较简陋,并未考虑到数组的处理、数据的循环依赖等,也难免存在一些问题,欢迎大家指正。不过这些并不会影响大家的阅读和理解,相信看完本文后对大家在阅读vue源码的时候会更有帮助 本文所有相关代码均在github上面可找到 https://github.com/DMQ/mvvm 相信大家对mvvm双向绑定应该都不陌生了,一言不
小时光
2018/01/29
3.2K0
xmind打不开xmind文件_鼠标双击无法打开文件
很多小伙伴安装完Xmind后会发现双击无法打开文件,只能在应用界面打开,我在网上也看了很多解决方案,但是很多都是没用的,比如这个:
全栈程序员站长
2022/11/01
4.9K1
xmind打不开xmind文件_鼠标双击无法打开文件
kotlin构建MVVM应用之双向数据绑定
我们在构建MVVM应用的时候数据时双向流动的,比如:用户输入了数据,那么我们的model层的数据也要自动跟着更新或者我们校验了数据,是图层也要给用户反馈;网络请求完成,我们的视图层的数据也要跟着更新。
大话swift
2020/04/15
1.5K0
如何实现伪双击事件
第一种方式:可以参考http://blog.csdn.net/zbssoft/article/details/5602658
跟着阿笨一起玩NET
2018/09/18
9010
javascript基础修炼(9)——MVVM中双向数据绑定的基本原理
MVVM模型是前端单页面应用中非常重要的模型之一,也是Single Page Application的底层思想,如果你也因为自己学习的速度拼不过开发框架版本迭代的速度,或许也应该从更高的抽象层次去理解现代前端开发,因为其实最核心的经典思想几乎都是不怎么变的。关于MVVM的文章已经非常多了,本文不再赘述。
大史不说话
2018/12/12
1.1K0
C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
GuZhenYin
2018/01/04
1.8K0
C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
WPF 绑定命令在 MVVM 的 CanExecute 和 Execute 在按钮点击都没触发可能的原因
在 WPF 推荐使用 MVVM 绑定命令,但是绑定命令会存在很多坑,其中一个就是焦点的问题。如果在用户点击按钮的时候出现了焦点修改,那么此时的命令是不会被触发
林德熙
2022/08/04
2.1K0
Vue中的MVVM
注:本文多数内容属于Vue2.6之前的内容,只有较为重要的地方才会补充2.6版本之后的内容,望周知。
Qwe7
2022/05/25
4440
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
在一个dom节点的事件绑定中,如果同时绑定了dblclick和mousedown那么想要执行双击事件(dblclick)时能就会触发两次mousedown事件。
李维亮
2023/10/23
9440
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
C# WPF mvvm模式下combobox绑定(list<enum>、Dictionary<int,string>)
ComboBox是一个非常常用的界面控件,它的数据源ItemsSource既可以绑定一个List列表,也可以是一个字典,本篇文章就讲这些内容展开讲解。
用户9127601
2021/11/01
6K0
在windows中:双击运行Python
一、安装Python解释器的windows环境,如果双击运行*.py的文件,会闪退。怎样避免闪退呢?
py3study
2020/01/06
4.8K0
在windows中:双击运行Python
豆瓣电台WP7客户端 MVVM重构记录之使用MVVM Light实现数据绑定
最近面试多次被问及MVVM,虽然看过园子里的教程,毕竟未实际实现过,都回答“只了解,未实践过”。今天终于逼自己去用MVVM重构下这个应用。
MJ.Zhou
2022/05/07
8040
豆瓣电台WP7客户端 MVVM重构记录之使用MVVM Light实现数据绑定
点击加载更多

相似问题

DOM自身能否实现MVVM?

0207

jQuery如何区分左右点击鼠标?

2316

腾讯云有没有双击热备功能?

1408

mysql 数据库怎么双击编辑内容?

3666

求助 如何绑定域名?

1586
相关问答用户
擅长3个领域
腾讯 | 技术专家擅长2个领域
萃橙科技 | 合伙人擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档