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

站长源码网页链接下载

站长源码,网页链接下载,cms网站制作,ui素材一、目的:开发过程中,经常碰到使用别人的控件时有些属性改变没有对应的事件抛出,从而无法做处理。比如TextBlock当修改了IsEnabled属性我们可以用IsEnabledChanged事件去做对应的逻辑处理,那么如果有类似Background属性改变我想找…

一、目的:开发过程中,经常碰到使用别人的控件时有些属性改变没有对应的事件抛出,从而无法做处理。比如TextBlock当修改了IsEnabled属性我们可以用IsEnabledChanged事件去做对应的逻辑处理,那么如果有类似Background属性改变我想找对应的事件该如何处理,本文介绍DependencyPropertyDescriptor的应用,用该类可以监视到Background改变的处理


二、演示

可以看到,当修改TextBlock的Background属性时,Text的值也做出相应改变。 

三、环境


VS2022

四、实现

相关代码

定义一个ComboBox去修改Textblock的Backround属性

            <DockPanel><ComboBox x:Name="cbb_dpd" DockPanel.Dock="Top"><SolidColorBrush Color="Yellow"/><SolidColorBrush Color="Orange"/><SolidColorBrush Color="Purple"/><SolidColorBrush Color="Green"/></ComboBox><TextBlock x:Name="g_dpd" TextAlignment="Center" FontSize="100" VerticalAlignment="Stretch" Background="{Binding ElementName=cbb_dpd,Path=SelectedItem}"/></DockPanel>

应用 DependencyPropertyDescriptor注册Textblock的Background改变时的响应事件

      public MainWindow(){InitializeComponent();var dependencyPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(TextBlock.BackgroundProperty, typeof(TextBlock));dependencyPropertyDescriptor.AddValueChanged(this.g_dpd, (s, e) =>{this.g_dpd.Text = this.g_dpd.Background.ToString();});}

核心代码是

首先,用一个依赖属性定义一个DependencyPropertyDescriptor

 var dependencyPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(TextBlock.BackgroundProperty, typeof(TextBlock));

之后,用DependencyPropertyDescriptor将想要监视的Textblock注册通知

          dependencyPropertyDescriptor.AddValueChanged(this.g_dpd, (s, e) =>
          {
              this.g_dpd.Text = this.g_dpd.Background.ToString();
          });

同理其他依赖属性改变也可以用此方法处理,比如常见的ListBox的ItemsSource属性改变没有通知,我们就可以用此方法处理如果数据源改变了我们要做一些刷新处理。

五、需要了解的知识点

DependencyPropertyDescriptor 类 (System.ComponentModel) | Microsoft Learn

PropertyDescriptor 类 (System.ComponentModel) | Microsoft Learn

DependencyProperty Class (System.Windows) | Microsoft Learn

TextBlock 类 (System.Windows.Controls) | Microsoft Learn

TextBlock.Background 属性 (System.Windows.Controls) | Microsoft Learn

六、源码地址

GitHub - HeBianGu/WPF-ControlDemo: 示例

GitHub - HeBianGu/WPF-ControlBase: Wpf封装的自定义控件资源库

GitHub - HeBianGu/WPF-Control: WPF轻量控件和皮肤库

七、了解更多

System.Windows.Controls 命名空间 | Microsoft Learn

https://github.com/HeBianGu

HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

http://www.yayakq.cn/news/244849/

相关文章:

  • 为什么要建设医院网站兼职网网站建设方案
  • 专业微网站开发网站怎么做网页
  • 个人网站设计总结信息发布网站推广技巧
  • 人力资源三网站建设跨境电商一件代发货源平台
  • 网站备案号如何获得南通宏仁建设工程有限公司招聘网站
  • 做效果图比较好的模型网站建设电影网站代码
  • 郑州高新区建设环保局网站关键词seo排名怎么样
  • 自己做视频网站会不会追究版权wordpress 设置语言
  • 优化网站排名方法建设公司网站需要钱吗
  • 域名还在备案可以做网站吗网页制作公司广州
  • 本地做的网站怎么放到网上去英语培训
  • 网站开发建设费用明细如何制作出优秀的ui设计
  • 上饶网站建设兼职手机网站微信登录接口
  • 长沙网站推广seo响应式网站和非响应式网站的区别
  • 行知网站建设公司公众号运营方案
  • 广西教育学会 网站建设人工智能设计网站
  • 网站建设怎么制作模板兰州装修公司口碑排名
  • 建设局网站买卖合同单页网站制作 在线 支付
  • 怎样发布自己的网站动漫设计与制作培训学院
  • 学习网站后台维护网站建设带主机
  • 建设银行网站可以查保单吗电气营销型网站方案
  • 图书馆门户网站建设方案专门做超市海报的网站
  • 中交建设集团网站更改wordpress所有的链接
  • 网站开发公司职位做一件代发的网站
  • 企业专业网站建设的必要性做网站从设计到上线流程
  • 一 网站建设的总体目标微信小程序开发案例教程
  • 大型网站维护费用官方网站拼多多
  • 那个网站做二手买卖的网络营销中的seo与sem
  • 网站开发用到的虚拟机有哪些手机网站适合分开做
  • 蚌埠网站制作公司哪家好南京行业网站建设