我有一个绑定到ObserveableCollection(MyClass)source1的Datagrid;
MyClass有2个属性:string Name,int AGE
现在我在Collection中有50个MyClass Objets,这意味着我的数据网格中有50行。 如果我想看到所有行,我必须滚动,这没关系!!
private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e){
int index = dataGrid.SelectedIndex;
obsCollection[index].Name="AAAAA";
}
每次我点击一行,我想在那一行名称更改为字符串名称=“AAAAAA”;
如果我向上或向下滚动并且数据网格中不再显示该行,则整个过程都有效。不知何故,当行在视线之外并且稍后显示时,该行将获得更新。当我滚动并返回到该行并且数据网格中的行现在再次显示时,该值已更新。
但我想要立即改变!!只需选择/单击该行,名称将更改为“AAAAAA”。 我不希望看到那一行,以获得更新。
编辑:我不能使用datagrid.itemsssource = null;因为我会在selectionchanged上获得无限循环
答案 0 :(得分:2)
您的通用类型的ObservableCollection需要实现INotifyPropertyChanged。例如,您拥有Employee
的集合,并希望在某个员工的值发生变化时自动更新UI。
您需要创建Employee类并实现INotifyPropertyChanged。
public class Employee : INotifyPropertyChanged
{
public string FirstName
{
get { return this._firstName; }
set
{
this._firstName = value;
this.NotifyPropertyChanged("FirstName");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
使用Employee作为ObservableCollection的通用参数类型,如ObservableCollection<Employee>
现在,当您在ObservableCollection中更改employee的值时,该值将更新为UI。