[WPF系列]基础 Listening to Dependency Property change notifications of a given Element

I want to share this great post from Anoop that shows a easy way to add a notification system to dependency properties of a given element. It creates and attaches a new property to the existing property and let’s you specify the PropertyChangedCallback eventhandler.

There are different examples on the internet, but i like how Anoop created a generic method with access to the callback event handler.

Here is the main part of the code:

/// Listen for change of the dependency property
public void RegisterForNotification(string propertyName, FrameworkElement element, PropertyChangedCallback callback)
{
//Bind to a depedency property
    Binding b = new Binding(propertyName) { Source = element };
    var prop = System.Windows.DependencyProperty.RegisterAttached(
                    "ListenAttached"+propertyName,
                    typeof(object),
                    typeof(UserControl),
                    new System.Windows.PropertyMetadata(callback));  

    element.SetBinding(prop, b);
}

And here is an example on how to use it:

//Shows a message box when the text of the Textbox changes.
RegisterForNotification
    ("Text", this.txtMain,(d,e)=>MessageBox.Show("Text changed"));

Read Anoop’s complete article for more information!

update (07/28/2011):

here is small update of the code so it also works with other objects instead of just FrameworkElements

 

private void RegisterForNotification(string propertyName, object source, PropertyChangedCallback callback)
{
    Binding b = new Binding(propertyName);
    b.Source = source;  

    DependencyProperty prop = System.Windows.DependencyProperty.RegisterAttached(
                        "ListenAttached" + propertyName,
                        typeof(object),
                        this.GetType(),
                        new System.Windows.PropertyMetadata(callback));  

    BindingOperations.SetBinding(this, prop, b);
}

 

引用

Tips & Tricks: Listening to Dependency Property change notifications of a given Element

时间: 2024-10-06 19:00:50

[WPF系列]基础 Listening to Dependency Property change notifications of a given Element的相关文章

[WPF系列]-基础系列 Trigger, DataTrigger & EventTrigger

So far, we worked with styles by setting a static value for a specific property. However, using triggers, you can change the value of a given property, once a certain condition changes. Triggers come in multiple flavors: Property triggers, event trig

[WPF系列]基础学习(一) WPF是什么?

引言   学习之前,我们首先要大概了解下WPF诞生的背景以及它所能解决的问题或者新颖之处. WPF简介   WPF的全称是WindowsPresentationFoundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示, 所以叫Presentation(呈现).   微软公司早在2003年洛杉矶的PDC上就公布了一个代号为Avalon的项目,他们将其视为下一代用户界面技术,并且得到了开发者和用户的一致赞同.在2005年的PDC上,微软公司展示了比2003年

WPF基础学习笔记(一)Dependency Object 和 Dependency Property

.依赖属性是WPF个人觉得对精彩和最有特色的部分.所以特地先拿出来. 首先要实现Dependency Property 则必须要继承Dependency Object.如果看下WPF的基础控件其实都间接或者直接继承Dependency Object,这点规律性我在后面再做规律陈述. 首先Dependency Object 我搬下书的描述 Only the thread that the Dispatcher was created on may access the DispatcherObje

【WPF系列】基础学习-XAML

引言 WPF框架中已经提到,WPF框架提供XAML基本服务.WPF中XAML的引入向开发者提供UI设计和代码分离的编程型.XAML是WPF中提出的一个具有重要意义的新技术,基本涉及WPF中所有UI开发.本设计所有UI代码都采用XAML.   XAML综述 XAML(可扩展应用标记语言的简称,可以称为zammel)是一种被用于.net对象实例的标记语言.尽管XAML是一种可以被应用于不同问题领域的技术,但它最初被设计时是作为WPF的一部分,WPF允许Windows开发人员建设富用户界面.你可以用相

WPF系列之三:实现类型安全的INotifyPropertyChanged接口,可以不用“Magic string” 么?

通常实现INotifyPropertyChanged接口很简单,为你的类只实现一个PropertyChanged 的Event就可以了. 例如实现一个简单的ViewModel1类: public class ViewModel1 : INotifyPropertyChanged { private string _data; public string Data { get { return _data; } set { if (_data == value) return; _data = v

自学WPF系列(1)

介绍 使用WPF工作6个多月了,是时候写一些WPF的基础知识了.在这个主题上我已经写了几篇文章了.他们都是基于处理一些具体的问题而完成的.现在我抛砖引玉,并让您理解如何/为什么WPF作为革命性的UI开发走向了我们. 由于这是一篇适合初学者和中级水平的程序员的文章,我将尽量给出尽可能多的基本的例子. Windows Presectation Foundation 正如名字所示,WPF实际上是.NET Framework3.0引入的几个framework.它实际上是提出了一套新的类和程序集并允许我们

[WPF系列-数据邦定之DataTemplate 根据对象属性切换模板

  引言 书接上回[WPF系列-数据邦定之DataTemplate],本篇介绍如何根据属性切换模板(DataTemplate)   切换模板的两种方式:   使用DataTemplateSelector来切换模板 使用DataTrigger来实现模板切换. 使用Style来是实现模板切换   A DataTemplateSelector does not respond to PropertyChange notifications, so it doesn't get re-evaluated

WPF入门基础教程之布局(1)

WPF的常用布局控件的介绍及使用方法 (1) 开局一张图,内容全靠写,本系列的文章, 主要针对刚入门.亦或是从 winform/bs转过来的开发人员快速入门的指南, 相对于其它一些文章中会详细的从项目如何建立到其实现的原理及组成部分, 本系列的文章则旨在如果快速的构建: 从布局.样式.触发器.绑定.显示.MVVM架构一系列的阶段学习,构建一个基础的呈现以达到学习的目的. WPF相关资料合集 (含书籍.框架.及开源UI组件等) WPF编程宝典.pdf 深入浅出WPF.pdf MaterialDes

DOM系列---基础篇

DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM 产生于 网景公司及微软公司创始的 DHTML(动态 HTML) ,但现在它已经成为表现和操作页面标记的真正跨平台.语言中立的方式. DOM 中的三个字母: D(文档)可以理解为整个 Web 加载的网页文档: O(对象)可以理解为类似 window 对象之类的东西,可以调用属性