【发布时间】:2011-11-22 21:31:48
【问题描述】:
这个问题是我上一个问题DataGrid - grid selection is reset when new Data is arrived的结果
================================================ =======================
我有这样的DataGrid
<DataGrid AutoGenerateColumns="True" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch" ItemsSource="{Binding DataList}" IsReadOnly="True"/>
在我的 ViewModel 中有这样的字段:
public ObservableCollection<ConsoleData> DataList { get; set; }
还有这种每秒调用一次的方法:
private void model_DataArrived(List<ConsoleData> dataList)
{
DataList.Clear();
dataList.ForEach(x => DataList.Add(x));
}
================================================ =======================
我们发现,因为我调用了DataList.Clear,所以 UI 控件中的选择也会被清除,我不希望这种情况发生。很可能我不应该在ViewModel 中替换ConsoleData 的实例,而是应该update 这些实例。
但是ObservableCollection 观察添加/删除我猜并且不观察update 不是吗?那么如果我将update 实例DataBinding 将不起作用?
当前应用程序的另一个问题是dataList.ForEach(x => DataList.Add(x)); 强制数据绑定在每次迭代时执行,而不是仅在结束时执行?
总的来说,什么是做我想做的事情的正确方法,因为当前的应用程序不起作用并且有太多问题......
【问题讨论】:
标签: c# wpf data-binding mvvm