欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF之Binding--02 (自定义类实现Binding与没有Path的Binding)

程序员文章站 2022-06-07 13:46:32
...

自定义类实现Binding

欲实现自定义的类的Binding,必须使得该类实现接口INotifyPropertyChanged。所以我们需要先using一下 System.ComponentModel。

简单举个例子:

 using System.ComponentModel;
 class Test : INotifyPropertyChanged 
    {
        string name=null;
        public event PropertyChangedEventHandler PropertyChanged;
        public string Name
        {
            get { return name; }
            set
            {
                name = value;
                //激发事件
                if(PropertyChanged!=null)
                {
                    PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
                }
            }
        }
    }

如此做,即可将Test类的实例作为Source,其Name属性作为Path,实现Binding了。

没有Path的Binding

通过WPF之Binding–01(快速入门与理解)对Path的认识,我们知道Binding之所以要指定Path是因为一个控件有多个属性,若是不设置Path,程序就不知道Binding这座桥梁该架向何处。但是,如果存在实例本身就是数据的情况就可以不指定Path属性。例如int,string这些基本类型就是这样。在这种情况下,我们使用Path=.的方式来表示。
代码如下:

<StackPanel>
        <StackPanel.Resources>
            <sys:String x:Key="TestString">
                Hello World!
            </sys:String>
        </StackPanel.Resources>
        <TextBox x:Name="t1" Margin="5" Text="{Binding Path=.,Source={StaticResource ResourceKey=TestString}}"/>
</StackPanel>