原文地址:http://visuallylocated.com/post/2015/04/01/Registering-to-any-DependencyProperty-changing-in-Windows-Apps.aspx

仍然有许多证明指出,在 Windows Runtime 的 XAML 里,缺失了很多 WPF 里的特性。其中一项是在 WPF 中,可以在依赖属性发生改变时获取到通知(链接)。现在,得益于 DependencyObject 类的 RegisterPropertyChangedCallback 这个新方法(链接),这项功能能够在 Windows 应用程序上实现了。这将为我们打开一个充满机会的新世界。当我们创建自定义控件或者对现有控件进行包装的时候,这项功能显得十分的有用。

与其去深入一些复杂的东西,我更倾向于使用一个快速的例子。一个拥有文本的文本框,但是没有办法在文本发生改变时得到通知。当然,我们也可以使用数据绑定,绑定到 Text 属性上,但是,现在请先忽略它。

现在,我们创建两个文本框和一个按钮。

<StackPanel>
<TextBlock x:Name="CounterText"/>
<Button Content="Click me" Click="OnButtonClicked"/>
<TextBlock x:Name="DuplicateTextBlock"/>
</StackPanel>

当这个按钮被点击的时候,我们将设置第一个文本框的文本。

private int _counter;

private void OnButtonClicked(object sender, RoutedEventArgs e)
{
CounterText.Text = string.Format("Clicked {0} times", ++_counter);
}

同时,我们也为 CounterText 这个文本框注册一个 Text 属性变化的回调函数。在回调函数里,我们将设置另一个文本框的文本。

public MainPage()
{
this.InitializeComponent(); CounterText.RegisterPropertyChangedCallback(TextBlock.TextProperty, OnTextChanged);
} private void OnTextChanged(DependencyObject sender, DependencyProperty dp)
{
var t = (TextBlock)sender; DuplicateTextBlock.Text = t.Text;
}

现在,你每一次点击按钮,都会设置第一个文本框的文本,并且回调函数将会触发并设置第二个文本框的文本!

【转】【译】在 Windows 10 应用程序中注册任意依赖属性的改变的更多相关文章

  1. Windows 10 版本 1507 中的新 AppLocker 功能

    要查看 Windows 10 版本信息,使用[运行]> dxdiag  回车 下表包含 Windows 10 的初始版本(版本 1507)中包括的一些新的和更新的功能以及对版本 1511 的 W ...

  2. 修复Windows 10 SDK 17763中NavigationView上的AcrylicBrush丢失

    原文 修复Windows 10 SDK 17763中NavigationView上的AcrylicBrush丢失 Microsoft发布了新版本的Windows 10 UWP SDK Build 17 ...

  3. 使用Prism6 建立 Windows 10 通用程序.

    使用Prism6 建立 Windows 10 通用程序. 目标: 使用prism6,建立Windows 通用程序项目. 1, 解决方案—添加新建项目—通用—空白应用—输入名称—确定—确定 2 ,引用上 ...

  4. Windows 10 子系统 Ubuntu 中安装 FastAdmin

    Windows 10 子系统 Ubuntu 中安装 FastAdmin 打开 Windows 10 子系统 安装 Ubuntu 修改安装源为阿里的 %LOCALAPPDATA%\Packages\Ca ...

  5. 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图

    [源码下载] 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取文件夹的属性 ...

  6. 解决windows 10英文版操作系统中VS2017控制台程序打印中文乱码问题

    当您在windows 10英文版的操作系统中运行Vs2017控制台应用程序时,程序可能无法正常显示中文,中文都变成了乱码.这是由于大部分中文程序所使用的文字编码与Windows 英文系统的文字编码不同 ...

  7. Windows 10 UWP程序标题栏设置

    在Windows 10程序中,以前只能用于全屏方式的Metro程序现在可以运行在窗口模式下了,并且改了个新名字,叫Windows 通用程序(Universal Windows app),简称UWP程序 ...

  8. 1)Win10-UWA开发 UWP应用操作方法、Windows 10应用程序的指南

    孙广东   2015.8.22 全部任务类型(比方在列表中显示数据或创建导航窗格)的说明和代码演示样例. 在这一节 包含例如以下: 主题 描写叙述 Accessibility 创建通用的Windows ...

  9. Windows 10 Build 14997中Edge浏览器已默认阻止Flash运行

    在上周末偷跑的 Windows 10 Build 14997 向我们传递了很多信息,新增了蓝光过滤器等功能,并有望装备在即将到来的 Creators Update 中.经过深入发掘,外媒发现新版系统中 ...

随机推荐

  1. ReentrantLock synchronized

    关于互斥锁: 所谓互斥锁, 指的是一次最多只能有一个线程持有的锁. 在jdk1.5之前, 我们通常使用synchronized机制控制多个线程对共享资源的访问. 而现在, Lock提供了比synchr ...

  2. 上传 第三方jar包 nexus

    手动上传第三方jar包到nexus的步奏: 1)按下图方式进行 2)按下图完成上传 3)点击保存完成

  3. shell获取函数的返回值

    背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的.   定义一个函数 functionname(){      操作内容 ...

  4. 【校招面试 之 C/C++】第3题 为什么要内存对齐?以及内存对齐的方式

    1.为什么要进行内存对? 参考:https://blog.csdn.net/a369000753/article/details/51188915 所谓内存对齐,是为了让内存存取更有效率而采用的一种编 ...

  5. day7:vcp考试

    Q121. An ESXi 6.x host in the vCenter Server inventory has disconnected due to an All Paths Down (AP ...

  6. Template msg

    http://blog.csdn.net/xiejiawanwei2_bb/article/details/40680493 {{first.DATA}} 日期:{{Day.DATA}} 报警类型:{ ...

  7. [转]Win7下PEiD已停止工作

    转载自:http://www.programlife.net/peid-stop-working-under-win7.html PEID是一个很不错的工具,可查壳,查壳PE信息,借助插件还可以做一些 ...

  8. 配置 Mysql 支持远程访问 并取消域名解析以提高链接速度

    1 配置远程访问 1.1 修改 my.cnf [mysqld] 段 bind-address = 0.0.0.0 //支持所有 ipv4 1.2 建立远程访问用户 mysql> grant al ...

  9. hadoop 学习(三)之hdfs shell命令

    1.HDFS shell 1.0查看帮助  hadoop fs -help <cmd> 1.1上传  hadoop fs -put <linux上文件> <hdfs上的路 ...

  10. attempt to create delete event with null entity

    解决办法:删除之前判断是否为空 if(Object != null){ session.delete(Object); }