WPF-XAML中binding与cs文件中binding

在写程序的时候,我发现如果在cs文件中进行绑定(this.rgvCmsNameMain.ItemsSource = CmsList;)这样,可以成功绑定。

 

但是,如果在xaml文件中设置rgvCmsNameMain的ItemsSource属性为{Binding CmsList},却并不会成功。这是因为这样做需要有以下几个前提条件:

 

1. CmsList也需要实现INotifyPropertyChanged接口,如下:

ObservableCollection<Cms> _CmsList = new ObservableCollection<Cms>();

        public event PropertyChangedEventHandler PropertyChanged;

        public ObservableCollection<Cms> CmsList
        {
            get { return _CmsList; }
            set
            {
                if (_CmsList != value)
                {
                    _CmsList = value;
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("CmsList"));
                }
            }
        }

2. 需要设置一个全局的datacontext。

            this.DataContext = this;

3. 在xaml里进行绑定。

 

这样就可以成功,这几步缺一不可。

posted @ 2017-05-16 10:42  Et0l1A  阅读(1462)  评论(0编辑  收藏  举报