当ObservableCollection中的属性更改时,如何在Silverlight中更新DataGrid
我有一个绑定到ObservableCollection(MyClass)source1的Datagrid MyClass有两个属性:字符串名称、整数年龄 现在我的集合中有50个MyClass对象,这意味着我的datagrid中有50行。 如果我想看到所有的行,我必须滚动,这是好的当ObservableCollection中的属性更改时,如何在Silverlight中更新DataGrid,silverlight,data-binding,datagrid,Silverlight,Data Binding,Datagrid,我有一个绑定到ObservableCollection(MyClass)source1的Datagrid MyClass有两个属性:字符串名称、整数年龄 现在我的集合中有50个MyClass对象,这意味着我的datagrid中有50行。 如果我想看到所有的行,我必须滚动,这是好的 private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e){ int index = dataGrid.Sele
private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e){
int index = dataGrid.SelectedIndex;
obsCollection[index].Name="AAAAA";
}
每次单击一行时,我都希望该行的名称更改为string Name=“AAAAAA”
如果我向上或向下滚动,并且该行不再显示在datagrid中,整个过程都会正常进行。不知何故,当该行看不见并随后显示时,它会被更新。当我滚动并返回到该行时,该行现在再次显示在datagrid中,该值已更新
但是我想要一个即时的改变!!只需选择/单击该行,名称将更改为“AAAAAA”。
我不想让那一行消失在视线之外,以获得更新
编辑:我不能使用datagrid.ItemsSource=null;因为我将在selectionchanged上获得无限循环,所以您需要实现ObservableCollection的通用类型。例如,您拥有
Employee
的集合,并希望当某个员工的值发生更改时UI自动更新
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));
}
}
}
ObservableCollection
您的项目(MyClass)是否实现INotifyPropertyChanged?这是UI查看项目本身更改的要求;公共字符串_firstName;