我有一个WPF应用程序,它使用绑定到ObservableCollection的DataGrid元素:
ObservableCollection<Deployment> deployments = DataAccess.GetDeployments();
datagrid01.ItemsSource = deployments;
这是一个Deployment类。 Deployment对象表示在现场发生的Windows安装,因此像CurrentTime这样的事情经常发生变化。
class Deployment
{
public string UniqueID { get; set; }
public string ComputerName { get; set; }
public string IPAddress { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public string UserName { get; set; }
public string TaskSequenceName { get; set; }
public string MachineObjectOU { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? CurrentTime { get; set; }
public string Status { get; set; }
}
我希望定期更新DataGrid以及对这些对象的任何更改,例如CurrentTime或其状态。完成安装后,状态变为3,如果处于错误状态,则状态变为2。
因此,我可以在计时器上获得一个新的对象集合,但是将新项目中的新项目添加到DataGrid以及更改具有更新时间的现有项目的最佳方法是什么,或者状态,还是其他什么?
答案 0 :(得分:1)
将您的ObservableCollection作为属性,并使用INotifyPropertyChange接口在其上引发属性更改事件。然后,您可以将此属性绑定到xaml本身的DataGrid的itemsource。因此,无论是从UI还是从数据库中对集合进行任何更改,都会自动刷新整个列表。
答案 1 :(得分:1)
使用.Except()方法过滤来自ObservableCollection的项目
..
function sort_mixed(a, b) {
var val_a = ..
var val_b = ..
return isHighToLow ? desc(val_a, val_b) : asc(val_a, val_b)