首页 > 其他分享 >wpf 记一次诡异的PreviewMouseLeftButtonDown 无法触发问题

wpf 记一次诡异的PreviewMouseLeftButtonDown 无法触发问题

时间:2023-11-06 17:24:40浏览次数:38  
标签:触发 诡异 ExecuteMouseLeftButtonDownCommand MouseLeftButtonDownCommand private Previ

1、原始代码

<Grid  >
                                            <i:Interaction.Triggers>
                                                <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
                                                    <i:InvokeCommandAction Command="{Binding DataContext.MouseLeftButtonDownCommand,RelativeSource={RelativeSource AncestorType=local:PermissionManagementView}}" CommandParameter="{Binding }"></i:InvokeCommandAction>
                                                </i:EventTrigger>
                                            </i:Interaction.Triggers>
                                            <Grid.ColumnDefinitions>
                                                    <!--需要预留一个-->
                                                    <ColumnDefinition   ></ColumnDefinition>
                                                    <ColumnDefinition   SharedSizeGroup="c1"  ></ColumnDefinition>
                                                    <ColumnDefinition   SharedSizeGroup="c2"  ></ColumnDefinition>
                                                    <ColumnDefinition   SharedSizeGroup="c3"  ></ColumnDefinition>
                                                    <ColumnDefinition  SharedSizeGroup="c4"   ></ColumnDefinition>
                                                    <ColumnDefinition  SharedSizeGroup="c5"  ></ColumnDefinition>
                                                    <ColumnDefinition  SharedSizeGroup="c6"  ></ColumnDefinition>
                                                    <ColumnDefinition  SharedSizeGroup="c7"  ></ColumnDefinition>
                                                    <ColumnDefinition  SharedSizeGroup="c8"   ></ColumnDefinition>
                                                    <ColumnDefinition  SharedSizeGroup="c9"   ></ColumnDefinition>
                                                </Grid.ColumnDefinitions> 
                                         
                                                
                                                <TextBlock    Grid.Column="0"  Text="{Binding Id}"  VerticalAlignment="Center"  ></TextBlock>
  </Grid  >

在Grid不加背景颜色的时候点击空白处 时不时无法触发隧道事件PreviewMouseLeftButtonDown

bug解决 增加一个透明背景颜色 触发正常! 

 Background="Transparent"
   <Grid  Background="Transparent">
       <i:Interaction.Triggers>
           <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
               <i:InvokeCommandAction Command="{Binding DataContext.MouseLeftButtonDownCommand,RelativeSource={RelativeSource AncestorType=local:PermissionManagementView}}" CommandParameter="{Binding }"></i:InvokeCommandAction>
           </i:EventTrigger>
       </i:Interaction.Triggers>
       <Grid.ColumnDefinitions>
               <!--需要预留一个-->
               <ColumnDefinition   ></ColumnDefinition>
               <ColumnDefinition   SharedSizeGroup="c1"  ></ColumnDefinition>
               <ColumnDefinition   SharedSizeGroup="c2"  ></ColumnDefinition>
               <ColumnDefinition   SharedSizeGroup="c3"  ></ColumnDefinition>
               <ColumnDefinition  SharedSizeGroup="c4"   ></ColumnDefinition>
               <ColumnDefinition  SharedSizeGroup="c5"  ></ColumnDefinition>
               <ColumnDefinition  SharedSizeGroup="c6"  ></ColumnDefinition>
               <ColumnDefinition  SharedSizeGroup="c7"  ></ColumnDefinition>
               <ColumnDefinition  SharedSizeGroup="c8"   ></ColumnDefinition>
               <ColumnDefinition  SharedSizeGroup="c9"   ></ColumnDefinition>
           </Grid.ColumnDefinitions> 
    
           
           <TextBlock    Grid.Column="0"  Text="{Binding Id}"  VerticalAlignment="Center"  ></TextBlock>
 </Grid>

.cs代码

        private ICommand _MouseLeftButtonDownCommand;

        public ICommand MouseLeftButtonDownCommand =>
            _MouseLeftButtonDownCommand ?? (_MouseLeftButtonDownCommand = new DelegateCommand<object>(ExecuteMouseLeftButtonDownCommand));

        private void ExecuteMouseLeftButtonDownCommand(object obj)
        {
            var sysmenu = obj as SysMenu;
            if (sysmenu != null)
            {
                this.SelectSysMenu = sysmenu;
            }
        }

 

标签:触发,诡异,ExecuteMouseLeftButtonDownCommand,MouseLeftButtonDownCommand,private,Previ
From: https://www.cnblogs.com/JohnnyLei/p/17813202.html

相关文章

  • 深入理解WPF中的依赖注入和控制反转
    在WPF开发中,依赖注入(DependencyInjection)和控制反转(InversionofControl)是程序解耦的关键,在当今软件工程中占有举足轻重的地位,两者之间有着密不可分的联系。今天就以一个简单的小例子,简述如何在WPF中实现依赖注入和控制反转,仅供学习分享使用,如有不足之处,还请指正。 什么是依......
  • WPF InputHitTest的用法
    一、定义InputHitTest是一个用于检测鼠标指针是否命中某个可视元素的方法。它可以返回命中的最上层元素。 二、用法:①首先,我们需要获取InputHitTest方法所需的参数,即鼠标指针的位置。可以通过Mouse类的GetPosition方法来获取当前鼠标指针的位置:Pointposition=Mouse.Ge......
  • wpf之样式
    在Window.Resources中书写样式;<Window.Resources><StyleTargetType="Button"></Style></Window.Resources>TargetType是指定标签的类型;<StyleTargetType="Button"></Style>中的style样式会在所有的button按钮中生效;<......
  • [17章+电子书]C#速成指南-从入门到进阶,实战WPF与Unity3D开发
    点击下载:[17章+电子书]C#速成指南-从入门到进阶,实战WPF与Unity3D开发  提取码:a3s5 《C#速成指南--从入门到进阶,实战WPF与Unity3D开发》完整讲解了C#语言的核心知识和高阶编程技巧,并结合WPF客户管理系统和Unity3D切水果游戏两大实战项目,帮你实现技术的精通,完成从Zero到Hero的蜕变......
  • 界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘
    DevExpressWPFGauge(仪表)控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器,同时还具有最终用户交互性的集成支持。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着......
  • wpf prism 自定义委托命令DelegateCommand
    //构造函数publicMainWindowViewModel(){EditCommand=newDelegateCommand(_editCommand);}//命令声明一publicDelegateCommandEditCommand{get;set;}//构造函数中实例化委托void_editCommand(){MessageBox.Show("EditCommand");}//命令生命......
  • WPF 触发器
    触发器WPF的Trigger是一种用于定义和管理XAML资源的触发器,它可以根据不同的条件或事件来改变控件的属性或行为。以下是触发器的类型基本触发器(Trigger):这种触发器是根据控件自身的依赖属性的值来触发的,例如,当鼠标移动到按钮上时,改变按钮的背景色数据触发器(DataTrigger)......
  • WPF 控件模板
    控件模板WPF的ControlTemplate是一种用于定义和自定义控件的外观和结构的模板,它可以完全替换控件的默认模板,实现个性化和复杂的效果。WPF的ControlTemplate有以下几个特点:ControlTemplate是一个XAML元素,它可以包含任何类型的UI元素,如布局、形状、图像、文本等,这些元素......
  • PDMS & AM 侧边栏菜单 C# WPF技术
    项目的完整下载地址https://files.cnblogs.com/files/NanShengBlogs/AMCSTest.zip?t=1698491030&download=true先看效果 下面先看实现的几个函数1#创建wpf的用户控件,无选项的参考此链接修改csproject文件类库项目添加wpf方法写入下列代码<UserControlx:Class="AMCSTe......
  • wpf webview2动态修改下载文件的下载路径 文件下载路径选择
    通过webview2下载文件时候会将文件保存在用户的默认下载目录,如果想调整成通过弹窗选择下载路径的方式则需要将默认行为做出修改。本文通过CoreWebView2_DownloadStarting这个事件来调整下载路径,基本思路为通过弹窗让用户选择需要保存的路径,如果用户取消了此操作则通过这个事件......