您的位置:首页 > Web前端 > CSS

WPF 绑定集合 根据集合个数改变样式 INotifyCollectionChanged

2015-09-14 11:33 791 查看
问题:当前ListBox Items 绑定 集合数据源ListA时候;ListA集合数据源中存在另外一个集合ListB,当更改或往ListB集合中添加数据的时候,通知改变?

实体类继承 INotifyCollectionChanged 即可实现:

BaseViewModel:

public class ViewModel : BaseViewModel
{
private List<Person> _lp = null;
private RelayCommand _addCommand, _removeCommand;

public ViewModel()
{
LP = new List<Person>();
LP.Add(new Person(1, "aaa"));
LP.Add(new Person(2, "bbb"));
}

public List<Person> LP
{
get { return _lp; }
set { _lp = value; }
}

public ICommand AddCommand
{
get
{
if (_addCommand == null)
{ _addCommand = new RelayCommand(param => this.Add(), param => this.CanAdd); }
return _addCommand;
}
}

public bool CanAdd
{ get { return true; } }

public void Add()
{
Person ps = new Person(3, "ccc");
LP.Add(ps);
CollectionChanged += new NotifyCollectionChangedEventHandler(List_CollectionChanged);
OnPropertyChanged("LP");
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, LP[0], 0));
}

public ICommand RemoveCommand
{
get
{
if (_removeCommand == null)
{ _removeCommand = new RelayCommand(param => this.Remove(), param => this.CanRemove); }
return _removeCommand;
}
}

public bool CanRemove
{ get { return true; } }

public void Remove()
{
LP.RemoveAt(0);
CollectionChanged += new NotifyCollectionChangedEventHandler(List_CollectionChanged);
OnPropertyChanged("LP");
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, LP[0], 0));
}

private void List_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
// ??????????
}
}


View Code

完美解决!!
https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/1b55492b-e9ca-4610-a40d-107d64c8ea9f/inotifycollectionchanged-on-listt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: