原文地址: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. js ParseUrl

    js ParseUrl function parseURL(url) { var a = document.createElement('a'); a.href = url; return { sou ...

  2. xshell分隔符

    1.分隔符设置 \ :;`!@#$%^&()+|[]{}'",<>? 2.左键点击选中,右键点击复制

  3. suse安装gcc,升级到4.8.5

    前面这些是挂载iso,如果iso可以使用,就不需要下面几步. cd /etc/zypp/repos.d mkdir iso chmod -R 777 iso mount -o loop /media/ ...

  4. SQL日期和时间函数

    使用这些函数可以计算日期和时间值.例如,假设您希望了解通常在一周中哪一天的销售量最高.使用 DAYOFWEEK 函数,您可以创建一个公式来标识每天的销售订单数量.再比如,假设您希望比较在过去的一年中的 ...

  5. Java注解(Annotation)用法:利用注解和反射机制指定列名导出数据库数据

    闲来没事,想了一个应用的例子:用java如何把数据库的数据根据我们指定的某几列,如第2列,第4列,第6列导出来到Excel里? 写代码也是为了应用的,写好的代码更重要的是在于思考.我自己思考了这个示例 ...

  6. linux 版本号的查看

    1.# uname -a   (Linux查看版本当前操作系统内核信息)   Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:54:28 E ...

  7. linux用户和组

    1.用户隶属于用户组的. 2.用户与用户组配置文件 1)用户组配置文件 /etc/group 第一列:用户组的组名 第二列:组密码(真正的密码存储在了gshadow中) 第三列:用户组组ID,用户组唯 ...

  8. win10如何安装和创建 证书

    .下载winsdksetup.exe .在 MMC 管理单元中查看证书 打开一个命令提示符窗口. 类型mmc然后按 ENTER 键. 请注意,若要查看本地计算机存储中的证书,您必须具有管理员角色. 上 ...

  9. db2中如何获取当前日期前一周的日期

    SELECT CURRENT_DATE - (DAYOFWEEK(CURRENT_DATE) - 2 + (ROW_NUMBER() OVER (ORDER BY 1) ) ) DAY AS resu ...

  10. NSNotificationCenter 注意

    成对出现 意思很简单,NSNotificationCenter消息的接受线程是基于发送消息的线程的.也就是同步的,因此,有时候,你发送的消息可能不在主线程,而大家都知道操作UI必须在主线程,不然会出现 ...