• 【转】【译】在 Windows 10 应用程序中注册任意依赖属性的改变


    原文地址: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;
    }

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

  • 相关阅读:
    ffserver搭建服务器
    socketconnect函数详解
    ffmpeg 发送媒体流
    Android—Socket编程
    流媒体客户端的结构与原理浅析
    杭电分类:大数
    各种计时函数
    UVA465:Overflow
    杭电:sort
    CODING常见错误原因
  • 原文地址:https://www.cnblogs.com/h82258652/p/4402779.html
Copyright © 2020-2023  润新知