当前位置: 首页 > news >正文

C#--WPF自定义控件模板示例

1.UI代码

    <Button Background="Black"  BorderBrush="Transparent" Padding="0" HorizontalContentAlignment="Left" Style="{StaticResource ButtonEmpty}"Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:Valve1h}}, Path=ValueCmd}"CommandParameter="{Binding  ElementName=ID,Path=Text }" Cursor="Hand" IsHitTestVisible="True"/>

注释:属性绑定释义

Command--Ancestor 查找绑定至自定义控件Valve1h,实体命令绑定本地自建依赖属性ValueCmd

CommandParameter--绑定本地TextBlock控件Name为ID,Path为其文本值

2.cs代码

2.1 string依赖属性及属性值变化回调函数
        public static readonly DependencyProperty ValueLabelProperty =DependencyProperty.Register("ValueLabel", typeof(string),typeof(Valve1h), new PropertyMetadata("00", new                             PropertyChangedCallback(OnLabelChanged)));//CHANGEDpublic string ValueLabel{get { return (string)GetValue(ValueLabelProperty); }set { SetValue(ValueLabelProperty, value); }}static void OnLabelChanged(object sender, DependencyPropertyChangedEventArgs args){Valve1h source = (Valve1h)sender;//CHANGEDsource.ID.Text = (string)args.NewValue;//CHANGED}
2.2 Bool依赖属性及属性值变化回调函数
        public static readonly DependencyProperty ValueBitProperty =DependencyProperty.Register("ValueBit", typeof(bool),typeof(Valve1h), new PropertyMetadata(false, new PropertyChangedCallback(OnBitChanged)));//CHANGED--属性变化回调函数public bool ValueBit{get { return (bool)GetValue(ValueBitProperty); }set { SetValue(ValueBitProperty, value); }}static void OnBitChanged(object sender, DependencyPropertyChangedEventArgs args){Valve1h source = (Valve1h)sender;//CHANGEDif ((bool)args.NewValue)source.ValveShape.Fill = Brushes.GreenYellow;elsesource.ValveShape.Fill = Brushes.SteelBlue;            //CHANGED}
2.3 Command依赖属性
        public static readonly DependencyProperty ValueCmdProperty =DependencyProperty.Register("ValueCmd", typeof(ICommand),typeof(Valve1h), new FrameworkPropertyMetadata() { BindsTwoWayByDefault = true });//CHANGEDpublic ICommand ValueCmd{get { return (ICommand)GetValue(ValueCmdProperty); }set { SetValue(ValueCmdProperty, value); }}

相关文章:

  • mysqlbinlog解析
  • 数据分析之统计学基础
  • debian 常用命令
  • 通关!游戏设计之道Day17
  • 【如何在Qt C++中使用SSL和TLS加密传输数据?】
  • labview类编程
  • C++模板元编程--函数萃取
  • Cweek2+3
  • 算数运算符
  • 58. 最后一个单词的长度
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • java 对接农行支付相关业务(二)
  • Mac免费软件推荐
  • AI办公自动化:kimi批量新建文件夹
  • 【Python音视频技术】用moviepy实现图文成片功能
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【comparator, comparable】小总结
  • 【技术性】Search知识
  • Apache Spark Streaming 使用实例
  • JavaScript创建对象的四种方式
  • JAVA并发编程--1.基础概念
  • Lucene解析 - 基本概念
  • SegmentFault 2015 Top Rank
  • Twitter赢在开放,三年创造奇迹
  • vue.js框架原理浅析
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 那些年我们用过的显示性能指标
  • 强力优化Rancher k8s中国区的使用体验
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 中文输入法与React文本输入框的问题与解决方案
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​Java并发新构件之Exchanger
  • ​水经微图Web1.5.0版即将上线
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #知识分享#笔记#学习方法
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2022 CVPR) Unbiased Teacher v2
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二)PySpark3:SparkSQL编程
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (十六)一篇文章学会Java的常用API
  • .net 调用php,php 调用.net com组件 --
  • .Net6使用WebSocket与前端进行通信
  • .Net中ListT 泛型转成DataTable、DataSet