1 <Window x:Class="CommandDemo.MainWindow"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 xmlns:local="clr-namespace:CommandDemo"
7 mc:Ignorable="d"
8 Title="MainWindow" Height="450" Width="800">
9 <Grid>
10 <StackPanel Margin="10">
11 <TextBox Text="{Binding Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Height="40" />
12 <TextBlock Text="键盘tab,可以让Border获得焦点" />
13 <Border Width="100" Height="100" Background="Red" Focusable="True">
14 <Border.InputBindings>
15 <!--绑定鼠标左键双击-->
16 <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DoubleClickCommand}" CommandParameter="{Binding}" />
17
18 <!--绑定获取键盘焦点时,按下键盘组合键Ctrl+Enter时触发-->
19 <KeyBinding Key="Enter" Modifiers="Control" Command="{Binding KeyCommand}" CommandParameter="{Binding}" />
20 </Border.InputBindings>
21 </Border>
22 </StackPanel>
23 </Grid>
24 </Window>

前端代码

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6 using System.Windows;
7 using System.Windows.Controls;
8 using System.Windows.Data;
9 using System.Windows.Documents;
10 using System.Windows.Input;
11 using System.Windows.Media;
12 using System.Windows.Media.Imaging;
13 using System.Windows.Navigation;
14 using System.Windows.Shapes;
15
16 namespace CommandDemo
17 {
18 /// <summary>
19 /// MainWindow.xaml 的交互逻辑
20 /// </summary>
21 public partial class MainWindow : Window
22 {
23 public MainWindow()
24 {
25 InitializeComponent();
26 DataContext = new MainViewModel();
27 }
28 }
29 }

后的代码

 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Linq;
5 using System.Text;
6 using System.Threading.Tasks;
7 using System.Windows;
8 using System.Windows.Input;
9
10 namespace CommandDemo
11 {
12 class MainViewModel : INotifyPropertyChanged
13 {
14 private string name;
15 public event PropertyChangedEventHandler PropertyChanged;
16
17 public MainViewModel()
18 {
19 DoubleClickCommand = new DoubleClickCommand();
20 KeyCommand = new KeyCommand();
21 }
22
23 public string Name
24 {
25 get => name;
26 set
27 {
28 name = value;
29 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name)));
30 }
31 }
32
33 public ICommand DoubleClickCommand { get; private set; }
34 public ICommand KeyCommand { get; private set; }
35 }
36
37 class DoubleClickCommand : ICommand
38 {
39 public event EventHandler CanExecuteChanged;
40
41 public bool CanExecute(object parameter)
42 {
43 return true;
44 }
45
46 public void Execute(object parameter)
47 {
48 if (parameter is MainViewModel vm)
49 {
50 MessageBox.Show(vm.Name);
51 }
52 MessageBox.Show("DoubleClick");
53 }
54 }
55 class KeyCommand : ICommand
56 {
57 public event EventHandler CanExecuteChanged;
58
59 public bool CanExecute(object parameter)
60 {
61 return true;
62 }
63
64 public void Execute(object parameter)
65 {
66 if (parameter is MainViewModel vm)
67 {
68 MessageBox.Show(vm.Name);
69 }
70 MessageBox.Show("Key");
71 }
72 }
73 }

vm

wpf 控件绑定鼠标命令、键盘命令的更多相关文章

  1. WPF ItemsControl 控件支持鼠标滚轮滑动

    此文章意在解决在WPF中ItemsControl类型的集合控件支持鼠标滚轮操作,并可控制滚动的速度. 第一步:给ItemsControl添加滚轮事件. this.listBox.AddHandler( ...

  2. CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)

    事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便支持wpf的开发,同时,框架仍保留最低.net framework2.0 ...

  3. CYQ.Data 支持WPF相关的数据控件绑定.Net获取iis版本

    CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09) 事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便 ...

  4. WPF 在image控件用鼠标拖拽出矩形

    原文:WPF 在image控件用鼠标拖拽出矩形 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee ...

  5. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...

  6. WPF——控件之间的绑定

    一.启动窗口 二.控件绑定(注意看光标的位置,一个是单向绑定,一个是双向绑定) 注意看单向绑定与双向绑定的绑定方法:

  7. 6 WPF控件

    WPF控件分类: 内容控件 标题内容控件 文本控件 列表控件 基于范围的控件 日期控件 控件类 控件是与用户交互的元素.控件可以获得焦点,能接受键盘或鼠标的输入. 所有控件的基类是System.Win ...

  8. 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程

    反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑)   背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...

  9. 《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐

    大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用do ...

  10. Silverlight项目笔记5:Oracle归档模式引起的异常&&表格控件绑定按钮

    1.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA ...

随机推荐

  1. Node.js 与 PostgreSQL 集成:深入 pg 模块的应用与实践

    title: Node.js 与 PostgreSQL 集成:深入 pg 模块的应用与实践 date: 2025/2/5 updated: 2025/2/5 author: cmdragon exce ...

  2. server_patrol.sh服务器巡查脚本

    server_patrol.sh #!/bin/bash #!/usr/bin/expect -f#! auther by wangxp #定义一个变量 LANG="zh_CN.UTF-8& ...

  3. Q:nginx 访问报错403 forbidden

    curl 访问本地时 403 forbidden 查看nginx日志,路径为/var/log/nginx/error.log  (13: Permission denied),详细报错如下: 2021 ...

  4. Flink-cdc同步mysql到iceberg丢失数据排查

    一.获取任务信息 任务id:i01f51582-d8be-4262-aefa-000000 任务名称:ods_test1234 丢失的数据时间:2024-09-16 09:28:47 二.数据同步查看 ...

  5. FLink自定义Sink,生产的数据导出到Redis

    一.pom文件 https://www.cnblogs.com/robots2/p/16048648.html 二.自定义sink 2.1 自定义sink package net.xdclass.cl ...

  6. 解决Webstorm Nodejs console.log("这是中文") 控制台乱码

    设置文件编码 自定义vm选项文件 添加 文件最后一行添加 -Dfile.encoding=UTF-8 3.修改注册表 Windows+R --> regedit --> 计算机\HKEY_ ...

  7. 安川机器人HW1171766-A本体线缆维修详解

    随着工业自动化程度的不断提高,安川机器人在生产线上的应用越来越广泛.然而,在长期运行过程中,安川机器人本体线缆可能会出现磨损.老化.断裂问题,这些问题不仅会影响机器人的正常运行,还可能导致生产线的停滞 ...

  8. Thymeleaf Split

    <th:block th:each="image : ${#strings.listSplit(goods.images, ';')}"> <img th:src ...

  9. 【Abaqus热分析】热膨胀系数设置

    来源:帮助文档

  10. 值得推荐的IT公司名单(国企篇)

    大家好,今天我们来盘点一下值得推荐的国企,这些企业在行业内具有举足轻重的地位,不仅主营业务突出,福利待遇优厚,尤其是研发岗位的薪资区间,更是让人眼前一亮. 十大顶尖央企国企,待遇优厚如天花板级别!(排 ...