首页 > 其他分享 >WPF 解决 CommandParameter 参数不更新问题

WPF 解决 CommandParameter 参数不更新问题

时间:2024-03-09 20:11:07浏览次数:17  
标签:CommandParameter System public Visual 参数 using WPF Microsoft Studio

参考

环境

软件/系统 版本 说明
Windows Windows 10 专业版 22H2 19045.4046
Microsoft Visual Studio Microsoft Visual Studio Community 2022 (64 位) - 17.6.5
Microsoft .Net SDK 8.0.101 手动安装
Microsoft .Net SDK 7.0.306 Microsoft Visual Studio 携带
.net 6.x 创建当前文章演示 WPF 项目时指定 .net 版本所选择的框架
Prism Template Pack 2.4.1 Microsoft Visual Studio 扩展
XAML Style for Visual Studio 2022 3.2311.2 Microsoft Visual Studio 扩展(XAML 自动格式化)
HandyControl 3.5.1 NuGet包
Prism.DryIoc 8.1.97 NuGet包

提示

本文使用到了 Prism ,但是未使用该框架也可以用本方法解决。

正文

问题

在 ViewModel 中定义了 bool Listening ,在 XAML CommandParameter 中进行绑定,当 Listening 值更新时,CommandParameter 接收的 Listening 不更新。

解决

实现命令接口 ICommand 时自动实现了 public event EventHandler CanExecuteChanged;,需要调整为如下代码才可以重新触发 CanExecute 事件 :

			public event EventHandler CanExecuteChanged {
				add{CommandManager.RequerySuggested += value;}
				remove{CommandManager.RequerySuggested -= value;}
			}

完整命令接口 ICommand 实现为:

	using System;
	using System.Collections.Generic;
	using System.Diagnostics;
	using System.Linq;
	using System.Text;
	using System.Threading.Tasks;
	using System.Windows;
	using System.Windows.Input;
	using static ImTools.ImMap;

	namespace FileMonitoring.Commands
	{
		/**
		 * 开启监听命令
		 */
		internal class OnStartListenCommand : ICommand
		{

			private Action<object?> _execute;

			public OnStartListenCommand(Action<object?> execute)
			{
				_execute = execute;
			}

			public event EventHandler CanExecuteChanged {
				add{CommandManager.RequerySuggested += value;}
				remove{CommandManager.RequerySuggested -= value;}
			}

			public bool CanExecute(object parameter)
			{
				return !(parameter as bool?) ?? false;
			}

			public void Execute(object parameter)
			{
				Trace.WriteLine("开启监听命令");
				_execute(parameter);
			}
		}
	}

标签:CommandParameter,System,public,Visual,参数,using,WPF,Microsoft,Studio
From: https://www.cnblogs.com/xiaqiuchu/p/18063220

相关文章

  • 【测试】Android Studio 相关下载及参数
    AndroidStudio仅限命令行工具ZipfilesWindows:commandlinetools-win-11076708_latest.zip(153.6MB)SHA-256Checksums4d6931209eebb1bfb7c7e8b240a6a3cb3ab24479ea294f3539429574b1eec862commandlinetools-win-11076708_latest.zipAndroidEmulatorAndroid模拟器......
  • WPF多数类概念性注册加自动扫描
    在java中springboot的配置应用了自动扫描@ComponentScan(value={"com.example","com.fox"})而对于Asp.NetCore可以使用ScrutorstaticvoidMain(string[]args){varcollection=newServiceCollection();collection.Scan(action=>......
  • fink泛型参数问题和TypeHint TypeInformation Types区别
    TypeHint,TypeInformation,Types区别TypeInformation是flink的类型定义,TypeHint是描述用于描述泛型参数的辅助类,Types是一个封装了常用TypeInformation的工具类描述问题下面一段代码的有两个参数,第一个来自数据流元素,他的本质是入参。第二个是出参,效果和返回值类似第一个参......
  • 逆向实战33——某东登录参数与流程分析(包含滑块)
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站aHR0cHM6Ly9wYXNzcG9ydC5qZC5jb20vbmV3L2xvZ2luLmFzcHg/UmV0dXJuVXJsPWh0dHBzJTNBJTJGJTJGd3d3L......
  • WPF --- 触摸屏下的两个问题
    引言本片文章分享一下之前遇到的WPF应用在触摸屏下使用时的两个问题。场景具体场景就是一个配置界面,ScrollViewer中包含一个StackPanel然后纵向堆叠,已滚动的方式查看,然后包含多个TextBlock、TextBox以及DataGrid,期间遇到了两个问题:WPF在触摸屏下,如果有滚动条(ScrollV......
  • [GPT] quasar 在 setup() 周期阶段想设置meta信息,如何获取当前的 route 参数动态设置
     在Vue3的CompositionAPI(组合式API)中,特别是在 setup() 钩子函数阶段,由于没有访问到常规的Vue实例(this上下文),所以不能直接使用 this.$route 来获取路由信息。但是,你可以通过 useRoute() 函数来访问当前活跃的路由对象: import{useRoute}from'vue-router';......
  • 可变参数
    可变参数可变参数:指的是方法将来调用时,可以传入若干个指定类型的参数注意:1、一个方法定义中只能有一个可变参数2、可变参数必须在参数列表中的最后一个定义这是有限的值的情况packagecom.shujia.day13;publicclassKeBianCanShuDemo1{publicstaticvoidmain(Str......
  • WPF(.netCore) 嵌入WebApi服务
    1从NUGET添加组件“Swashbuckle.AspNetCore”相关使用代码varbuilder=WebApplication.CreateBuilder();builder.Services.AddControllers();varapp=builder.Build();app.UseHttpsRedirection();a......
  • python函数参数检查
    参数检查调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError:>>>my_abs(1,2)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:my_abs()takes1positionalargumentbut2weregiven但是如果参数类型不对,Python......
  • spring-HandlerMethodArgumentResolver-参数解析器
    1,参数解析器介绍  HandlerMehtodArgumentResolver,中文成为方法参数解析器,是SpringMvc组件的众多解析器之一,主要用来对Controller的方法参数进行处理。2,参数解析器的使用1,实现HandlerMethodArgumentResolver,自定义解析器publicclassMyHandlerMethodArgumentResolver......