依赖属性与Binding

来源:互联网 发布:耽美网络剧资源百度云 编辑:程序博客网 时间:2024/05/23 20:54

什么是依赖属性:自己没存储空间,需要附加(Binding)到其他属性上并使用它的值

自定义一个 依赖属性:

public class Dependency : DependencyObject  //一定要继承自DependencyObject类    {        //对依赖属性封包,可以没有        public string PersonAge        {            get            {                return (string)GetValue(Age);            }            set            {                SetValue(Age,value);            }        }        //依赖属性的定义和注册,三个参数是属性的名字,类型,和宿主类型        public static readonly DependencyProperty Age = DependencyProperty.Register("Age",typeof(string),typeof(Dependency));    }

定义一个正常的属性

    class RunClass : ViewModelBase //继承ViewModelBase    {        private string ss;        public string Ss        {            get            {                return ss;            }            set            {                ss = value;                OnPropertyChanged(nameof(Ss)); //一定要有,否则不会通知依赖属性进行更改            }        }    }

定义ViewModelBase

    class ViewModelBase : INotifyPropertyChanged    {        public event PropertyChangedEventHandler PropertyChanged;        public void OnPropertyChanged(string pName)        {            if (PropertyChanged != null)            {                PropertyChanged(this,new PropertyChangedEventArgs(pName));            }        }    }

进行两个属性的Binding

        public MainWindow()        {            InitializeComponent();            RunClass run = new RunClass();            Dependency de = new Dependency();            //进行两个属性的Binding            Binding bd = new Binding("Ss") { Source = run};            BindingOperations.SetBinding(de,Dependency.Age,bd);            run.Ss = "123";            string personAge = de.PersonAge; //断点检查de.PersonAge的值是否已经随run.Ss的值一起改变            string personAge1 = personAge;        }
0 0
原创粉丝点击