WPF后台修改內容界面不顯示問題


通知3部曲:
1.Model繼承並實現 INotifyPropertyChanged 接口;
2.數據集合使用ObservableCollection<T>集合;
3.View使用Binding數據對象屬性;
————————————————————————————————————————————————————————————————
如果不行再看看集合在賦值前需要實例化,不然就出不來(必須要同一個源才行)

public class ViewModel
    {
        private ObservableCollection<Person> _PersonList = new ObservableCollection<Person>();// 可以
        /// <summary>
        /// 
        /// </summary>
        public ObservableCollection<Person> PersonList
        {
            get { return _PersonList; }
            set { _PersonList = value; }
        }
        public ViewModel()
        {
            _PersonList = new ObservableCollection<Person>();// 也可以
        }
    }

在Window后面使用的時候定義需要在this.DataContext=vm;之前就完成集合的實例化,否則就通知不了。

ViewModel vm=new ViewModel();
this.DataContext=vm;

————————————————————————————————————————————————————————————————
錯誤例子:如果ViewModel這么定義就不行了

public class ViewModel
    {
        private ObservableCollection<Person> _PersonList;
        /// <summary>
        /// 
        /// </summary>
        public ObservableCollection<Person> PersonList
        {
            get { return _PersonList; }
            set { _PersonList = value; }
        }
        public void AddData()
        {
            _PersonList = new ObservableCollection<Person>();//這時候已經不行了
        }
    }

具體使用的時候:

ViewModel vm=new ViewModel();
this.DataContext=vm;
vm.AddData();

如果這時候界面想正常顯示,需要重新賦值,使用this.DataContext=vm;也不好用必須↓↓↓

datagrid.ItemsSource=vm.PersonList;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM