首页 > 其他分享 >WPF 实现在Combobox下拉菜单展开,未选择,直接点击button自动收起下拉菜单,并响应button绑定事件

WPF 实现在Combobox下拉菜单展开,未选择,直接点击button自动收起下拉菜单,并响应button绑定事件

时间:2023-06-19 16:58:44浏览次数:38  
标签:Combobox button 绑定 VM keyValues CB 下拉菜单

在正常情况下,下拉菜单展开后,我们都会选择一个合适的选项;

但是在某些时候,展开下拉菜单后,发现并不需要选择一个选项,只是需要进行后续操作,然后这时在点击其他位置的button时,你会发现:只有combobox的下拉菜单收起来了,但是button的绑定事件并未响应……

 

为了实现未选择下拉菜单,点击button时combobox能收起下拉菜单,并响应button的click事件,小子采用了下述方法(谁有更好办法,请留言指教):

  private void DropDownOpenFalse()
        {
            comboBox.IsDropDownOpen = false;
            comboBox2.IsDropDownOpen = false;
            comboBox3.IsDropDownOpen = false;
        }

        Dictionary<object, ICommand> keyValues = new Dictionary<object, ICommand>();
        private void IniKeyValue()
        {
            keyValues.Add(MainNeedleButton_CB, VM.SendMainNeedleData);
            keyValues.Add(FixedNeedleButton1_CB, VM.SendFixedNeedle1Data);
            keyValues.Add(FixedNeedleButton2_CB, VM.SendFixedNeedle2Data);
            keyValues.Add(FixedNeedleButton3_CB, VM.SendFixedNeedle3Data);
        }

        //为了解决combobox在下拉菜单打开,没做任何选择,直接点击按键时,按钮的click事件不响应
        private void NeedleButton_CB_PreviewMouseUp(object sender, MouseButtonEventArgs e)
        {
            DropDownOpenFalse();
            keyValues[(Button)sender].Execute(null);
        }
DropDownOpenFalse 为了将3个下拉菜单都收起。
IniKeyValue       实例化时,初始化keyValues;
注意其中的VM,为在xml中将引入的ViewModelf设置了一个x:name(如:<viewmodel:MainWindowsViewModel x:Name="VM"/>)。
NeedleButton_CB_PreviewMouseUp 调用button的PreviewMouseUp事件,实现收起下拉菜单,并调用绑定的ICommand执行。


为了方便添加button或其他控件,将button与执行的ICommand用Dictionary进行了键值绑定,同时也简化了代码……
 

标签:Combobox,button,绑定,VM,keyValues,CB,下拉菜单
From: https://www.cnblogs.com/chengcanghai/p/17491529.html

相关文章

  • 2023-06-19 API `getMenuButtonBoundingClientRect` is not yet implemented
    前言:想使用该Api来获取设备导航栏高度,结果报错了:API`getMenuButtonBoundingClientRect`isnotyetimplemented尚未实现API`getMenuButtonBoundingClientRect`原因:该Api不支持在app端或者h5端使用。平台兼容如下: AppH5微信小程序支付宝小程序百度小程序抖音小程序飞书小......
  • hObject==handles.pushbutton1;sprintf('handles.pushbutton1 is %d',handles.pushbutt
    %---Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandles......
  • GetSelfnameDlg::OnButton1()
    voidCGetSelfnameDlg::OnButton1(){ //HANDLEhThread; charszLibPath[_MAX_PATH]; //void*pLibRemote=0; //theaddress(intheremoteprocess)where //szLibPathwillbecopiedto; //DWORDhLibModule=0; //baseadressofloadedmodule......
  • C#Word开发,VSTO中自定义右键菜单,CommandBarButton的Click事件不触发,或者只触发一次
    C#Word开发,VSTO中自定义右键菜单,CommandBarButton的Click事件不触发,或者只触发一次_vsto右键快捷方式word_话与山鬼听的博客-CSDN博客 Word2016不会响应WindowBeforeRightClick事件的Bug问题 ......
  • 下拉菜单和虚拟导航键重叠问题
    bug:虚拟按键和下拉菜单按钮出现重叠现象,如图: 解决方案:将下拉菜单布局行数减少,上压下拉菜单布局修改如下: ......
  • wpf combobox 绑定枚举
    1、先定义个枚举转换类///<summary>///枚举转换///</summary>publicclassEnumerationExtension:MarkupExtension{privateType_enumType;///<summary>///枚举转换///</summary>///<param......
  • android Button组件的属性和方法
    androidButton组件的属性和方法   一、相关属性     二、相关方法 setClickable(booleanclickable)设置按钮是否允许点击。clickable=true:允许点击clickable=false:禁止点击setBackgroundResource(intresid)通过资源文件设置背景色。resid:资源xml文件ID。按钮默认背......
  • 【Android】ListView与Button的共存问题解决
    【Android】ListView与Button的共存问题解决这两天在捣鼓ListViewwidget,为了在ListView中加入Button这类的有“点击”事件的widget,请教了不少高手,感谢LandMark对我的认真讲解,下面把解决过程描述一下。 ListView和其它能触发点击事件的widget无法一起正常工作的......
  • WPF 绑定command在触屏上操作时,即使点中button也可能不触发
    现象:WPF程序绑定的command在触摸屏上,点击button后,button绑定的事件偶尔会出现不响应的情况。确认100%点击有效,不会出现误触的情况。但是用鼠标点击,绝对不会出现这种现象。 原因:在非触屏环境,bingdingcommand是由点击来触发,即是使用鼠标等输入设备来执行点击触发command,调用......
  • 前端vue自定义简单实用下拉筛选 下拉菜单
    前端vue自定义简单实用下拉筛选下拉菜单, 下载完整代码请访问: https://ext.dcloud.net.cn/plugin?id=13020效果图如下:   ####使用方法```使用方法<!--titleArr:选择项数组dropArr:下拉项数组@finishDropClick:下拉筛选完成事件--><ccDropDownMenu:tit......