C# 如何在windows phone 8中通知ObservableCollection计数的属性更改?
现在,我有一个C# 如何在windows phone 8中通知ObservableCollection计数的属性更改?,c#,windows-phone-8,binding,observablecollection,inotifypropertychanged,C#,Windows Phone 8,Binding,Observablecollection,Inotifypropertychanged,现在,我有一个可观察的集合。我将它的Count属性与TextBlock的Text属性绑定。在集合中添加或删除一个或多个项目时,计数将更新。据我所知,ObservableCollection实现了INotifyPropertyChanged和INotifyCollectionChanged,因此当Count属性更改时,应该更新我的视图。我希望与Count属性绑定的TextBlock应该显示更新的计数。但是无论如何,NotifyPropertyChange不会为Count属性调用 下面是如何将Tex
可观察的集合
。我将它的Count属性与TextBlock
的Text属性绑定。在集合中添加或删除一个或多个项目时,计数将更新。据我所知,ObservableCollection
实现了INotifyPropertyChanged
和INotifyCollectionChanged
,因此当Count属性更改时,应该更新我的视图。我希望与Count属性绑定的TextBlock
应该显示更新的计数。但是无论如何,NotifyPropertyChange
不会为Count属性调用
下面是如何将Text属性与Count绑定:
<TextBlock Text="{Binding MyObservableCollection.Count}" />
是否有任何方法可以通知ObservableCollection的Count属性的属性更改
?其他方法:
在MyObservableCollection中添加或删除项目时,您可以向视图模型添加计数,更新计数手册,并调用NotifyPropertyChange。其他方式:
您可以向视图模型添加计数,当您从MyObservableCollection中添加或删除项时,更新计数手册,并调用NotifyPropertyChange。据我所知,如果为整个
ObservableCollection
设置了新值,则在添加/删除的情况下,ObservableCollection
将自动更新。这意味着您需要在属性的setter中提高ObservableCollection
。因此,如果您正在设置新集合,则意味着添加PropertyChangedEvent
,如果您正在执行添加/删除操作,则不需要提高属性。如果您处于第二种情况,请检查输出窗口中的绑定错误,这很可能是您的问题。据我所知,ObservableCollection
将自动更新在添加/删除的情况下,如果为整个ObservableCollection
设置了新值,则意味着您需要在属性的setter中提升ObservableCollection
。因此,如果您正在设置新集合,则意味着添加PropertyChangedEvent
,如果您正在执行添加/删除操作,则不需要提升属性。如果您处于第二种情况,则检查输出窗口中的绑定错误,这很可能是您的问题。一种快速方法是使用CollectionChanged eventhandler
例如:
public class ViewModelExample : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _count;
public int Count
{
get
{
return _count;
}
set
{
_count = value;
RaisePropertyChanged("Count");
}
}
private ObservableCollection<String> _myObservableCollection;
public ObservableCollection<String> MyObservableCollection
{
get
{
return _myObservableCollection;
}
set
{
_myObservableCollection = value;
RaisePropertyChanged("MyObservableCollection");
}
}
public ViewModelExample()
{
this.MyObservableCollection = new ObservableCollection<String>();
this.MyObservableCollection.CollectionChanged += this.OnCollectionChanged;
this.Count = MyObservableCollection.Count;
for(int j=0;j<20;j++)
{
this.MyObservableCollection.Add("SOMETHING HERE");
}
}
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.NewItems!=null)
{
this.Count+=e.NewItems.Count;
}
}
private void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
公共类ViewModelExample:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
私人国际单位计数;
公共整数计数
{
得到
{
返回计数;
}
设置
{
_计数=数值;
RaisePropertyChanged(“计数”);
}
}
私人可观测集合(myObservableCollection);;
公共可观测集合MyObservableCollection
{
得到
{
return\u myobservatablecollection;
}
设置
{
_myObservableCollection=值;
RaisePropertyChanged(“MyObservableCollection”);
}
}
公共ViewModelExample()
{
this.MyObservableCollection=新的ObservableCollection();
this.MyObservableCollection.CollectionChanged+=this.OnCollectionChanged;
this.Count=MyObservableCollection.Count;
对于(int j=0;j来说,一个快速的方法是使用CollectionChanged eventhandler
例如:
public class ViewModelExample : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _count;
public int Count
{
get
{
return _count;
}
set
{
_count = value;
RaisePropertyChanged("Count");
}
}
private ObservableCollection<String> _myObservableCollection;
public ObservableCollection<String> MyObservableCollection
{
get
{
return _myObservableCollection;
}
set
{
_myObservableCollection = value;
RaisePropertyChanged("MyObservableCollection");
}
}
public ViewModelExample()
{
this.MyObservableCollection = new ObservableCollection<String>();
this.MyObservableCollection.CollectionChanged += this.OnCollectionChanged;
this.Count = MyObservableCollection.Count;
for(int j=0;j<20;j++)
{
this.MyObservableCollection.Add("SOMETHING HERE");
}
}
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.NewItems!=null)
{
this.Count+=e.NewItems.Count;
}
}
private void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
公共类ViewModelExample:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
私人国际单位计数;
公共整数计数
{
得到
{
返回计数;
}
设置
{
_计数=数值;
RaisePropertyChanged(“计数”);
}
}
私人可观测集合(myObservableCollection);;
公共可观测集合MyObservableCollection
{
得到
{
return\u myobservatablecollection;
}
设置
{
_myObservableCollection=值;
RaisePropertyChanged(“MyObservableCollection”);
}
}
公共ViewModelExample()
{
this.MyObservableCollection=新的ObservableCollection();
this.MyObservableCollection.CollectionChanged+=this.OnCollectionChanged;
this.Count=MyObservableCollection.Count;
for(int j=0;jI无法重现此问题。请检查您的属性和Datacontext。我无法重现此问题。请检查您的属性和Datacontext。