WPF 依赖属性和依赖对象

WPF的所有UI控件都是依赖对象,控件的属性都是依赖属性。
依赖属性(DependencyProperty)是一种自己可以没有值,但是通过Binding从数据源可以获得值的属性。拥有依赖属性的对象必须为依赖对象(DependencyObject)。
依赖对象具有SetValueGetValue两个方法。
依赖属性的名称通常约定以Property结尾,且只能以DependencyProperty.Register方法创建。
尽管依赖对象没有继承INotifyPropertyChanged,依赖属性在值改变时天生可以通知其Binding对象。

<TextBox x:Name="textbox1" Width="100" Height="50" BorderBrush="Red" Margin="5"></TextBox>
<TextBox x:Name="textbox2" Width="100" Height="50" BorderBrush="Red" Margin="5"></TextBox>
<Button Content="{Binding A}" Width="50"  Click="Button_Click"></Button>
...
Student stu = new Student();
stu.SetBinding(Student.NameProperty, new Binding("Text") { Source = textbox1 });
textbox2.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = stu });
...
public class Student : DependencyObject
{
    public static readonly DependencyProperty NameProperty = DependencyProperty.Register(
        "Name",//依赖属性
        typeof(string),//依赖属性注册类型
        typeof(Student)//依赖对象
    );
    public string Name
    {
        get { return (string)GetValue(NameProperty); }
        set { SetValue(NameProperty, value); }
    }
    //WPF中只有BindingOperations 和 UI元素对象可以直接调用SetBinding,通过该方法封装让依赖属性也可以调用
    public BindingExpressionBase SetBinding(DependencyProperty dp, BindingBase binding)
    {
        return BindingOperations.SetBinding(this, dp, binding);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录 什么是WPF? WPF的历史? 为什么要用WPF及WPF作用 WPF与winForm区别? 什么是WPF? ...
    灬52赫兹灬阅读 11,180评论 2 11
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,892评论 1 32
  • 什么是Xaml Xaml(Extensible Application Markup Language) 可扩展应...
    北风知我意阅读 3,899评论 0 1
  • 小学六年,贪玩的米莉竟然被我校的足球队长表白了! 说实话…那天夕阳西下,那一缕残留的阳光照在米莉乌黑发亮的头发上,...
    完美爱米莉阅读 2,801评论 1 3
  • 一、从加法时代到减法时代 只有学会对物品进行舍弃和精简,追求内心体验过于物品添加,才能让人感到安宁和喜乐。 二、尝...
    xixi_34b8阅读 4,913评论 0 1

友情链接更多精彩内容