首页 > 其他分享 >HandyControl 使用内置Command 执行无效问题

HandyControl 使用内置Command 执行无效问题

时间:2024-06-17 20:10:17浏览次数:9  
标签:内置 CloseWindowCommand object HandyControl Command cs public ControlCommands

blog-hbh-hc-header
HandyControl 中通过查阅代码HandyControl_Shared 共享项目中,Interactivity/Commands 目录下,存在着一些内置 Command,开心发现还有关闭窗体,最小化等系统级别常用命令。

CloseWindowCommand.cs
ControlCommands.cs
OpenLinkCommand.cs
PushMainWindow2TopCommand.cs
ScreenshotCommand.cs
ShutdownAppCommand.cs
StartScreenshotCommand.cs

其中主要是在ControlCommands.cs 中。由于是静态属性,所以可以直接在xaml中使用,已关闭窗体为例。

/// <summary>
///     控件库使用的所有命令(为了统一,不使用wpf自带的命令)
/// </summary>
public static class ControlCommands
{
	/// <summary>
    ///     关闭窗口
    /// </summary>
    public static CloseWindowCommand CloseWindow { get; } = new();
}

CloseWindowCommand 代码实现如下:

public class CloseWindowCommand : ICommand
{
    public bool CanExecute(object parameter) => true;

    public void Execute(object parameter)
    {
        if (parameter is DependencyObject dependencyObject)
        {
            if (Window.GetWindow(dependencyObject) is { } window)
            {
                window.Close();
            }
        }
    }

    public event EventHandler CanExecuteChanged;
}

页面按钮使用:

<Button Style="{StaticResource CloseButtonIcon}" 
        Command="{x:Static hc:ControlCommands.CloseWindow}" 
        Padding="10,0" hc:IconElement.Geometry="{StaticResource CloseGeometry}"
            ToolTip="关闭">

运行项目之后,点击按钮并没有触发对应的命令。通过查阅Github 中的issue可以查到如下信息:https://github.com/HandyOrg/HandyControl/issues/687
解决办法是添加对应的命令参数CommandParameter

<Button Style="{StaticResource CloseButtonIcon}" 
        Command="{x:Static hc:ControlCommands.CloseWindow}" 
        CommandParameter="{Binding RelativeSource={RelativeSource Self}}" 
        Padding="10,0" hc:IconElement.Geometry="{StaticResource CloseGeometry}"
            ToolTip="关闭">

其实熟悉命令的自定义基础实现方式,也能发现Excute(object paramer) 也是接受object 类型参数的。

标签:内置,CloseWindowCommand,object,HandyControl,Command,cs,public,ControlCommands
From: https://www.cnblogs.com/guanguanchangyu/p/18253133

相关文章

  • 13、ansible-shell、command、script使用
    command模块简介command模块用于在给的的节点上运行系统命令,比如echohello。它不会通过shell处理命令,因此不支持像$HOME这样的变量和,以及<, >, |, ;和&等都是无效的。也就是在command模块中无法使用管道符。模块参数名称必选备注chdirno运行command命令前......
  • CommandFlags枚举类
    API地址:https://help.autodesk.com/view/OARX/2018/ENU/?guid=OREFNET-Autodesk_AutoCAD_Runtime_CommandFlags相关博客介绍:https://www.cnblogs.com/liweis/p/4561226.htmlNoHistory:该命令不会添加到AutoCAD的重复上一个命令功能中。UsePickSet:检索拾取第一个集时,它将在A......
  • mac上解决command not found: code问题
    目录1.为什么会出现这个问题2.解决问题的两种办法2.1前提条件2.2方法一:在配置文件中增加环境变量2.3方法二:直接在软件中设置添加环境变量1.为什么会出现这个问题        这个错误表示在Mac终端中输入了code命令,但是系统找不到这个命令。这通常发生在尝......
  • synchronized内置锁和volatile关键字
    synchronized内置锁对象锁和类锁:对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的class对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。但是有一点......
  • QT6安装Android SDK出现"Android SDK Command-line Tools run"出错解决办法
    前言以下提供的方案,是在QT6,Androidstudio均有安装的前提下,安装完javaJDK,在设置安卓SDK时出现的问题,具体表现如标题所言本文目的是以做笔记学习,交流为主,推荐参考参考链接参考链接https://blog.csdn.net/yy_xzz/article/details/132135255操作流程确定NDK路径......
  • 传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
    内置数据源我们回顾一下druid数据源的配置方式通过type属性指定数据源的类型导入依赖starter就使用了spring的自动装配功能格式二是在引入druid的依赖的基础上进行的一种配置方式Tomcat内部也可以进行数据源的配置轻量级中最快的数据源对象我们切换德鲁伊连接池......
  • JavaScript内置API
    js的内置api:js语言本身提供的一组预定义的对象、方法和属性,开发者可以直接使用它们来实现各种功能优点:1.提高开发效率2.增加代码可读性和可维护性3.跨平台兼容4.性能优化5.社区支持6.标准化和规范化1.DOMAPI提供了操作网页HTML元素的方法和属性<divid="myEl......
  • Python期末系统梳理(二):内置数据结构
    几种数据结构的比较列表:由一系列按特定顺序排列的元素组成,使用方括号[]表示,逗号分割其中的元素,==可修改元组:理解为不可修改的列表即可,使用圆括号()表示集合:无序且不重复的元素序列,使用大括号{}表示字典:一系列键值对,每个键和一个值关联,可使用键访问值,无序再梳理·列表有......
  • Handycontrol组件库的Bug
    我的WPF程序使用了Handycontrol组件库,前端写了<ButtonWidth="100"Height="30"Margin="40,20,20,-100"HorizontalAlignment="Center"Background="#FF0078D7"Command="{Bindin......
  • Python中常用的几个内置方法(max()/min()、filter()、map()、sorted、reduce())
    1.max()/min()传入一个参数(可迭代对象),返回这个可迭代对象中最大的元素可以设置default关键字参数,当这个可迭代对象为空时,返回default的值传入多个参数,返回这些参数中最大的参数多个参数必须是同类型的两种方法都可以设置key关键字参数(传入函数)"""max(it......