2013-01-24 22 views
0

我正在开发WPF应用程序。它有一个DataGrid在里面。我已将我的数据网格的ItemSource分配给IEnumerable集合。 我在我的窗口中有一个Treeview。当我点击树视图中的元素,它具有加载数据网格如何更改IEnumerable集合以使其可以绑定到数据网格

private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
     this.dataGrid1.ItemsSource = null; 

     this.dataGrid1.Visibility = Visibility.Visible; 
     this.dataGrid1.ItemsSource = objref.FinalValue; 
     // Where Objref.FinalValue is an IEnumerable collection. 
     grid_data = objref.FinalValue; 
} 

但问题是每次的selection改变,在datagrid值不overwrittenen但追加。我用dataGrid1.Columns.Clear()dataGrid.ItemSource = null;刷新了数据网格后来我发现objref.FinalValue被追加了。所以,即使我冲它显示整个值的数据网格..

所以在objref为实例我已经使用

private IEnumerable Result; 

    public IEnumerable FinalValue 
    { 
     get { return Result; } 
     set { Result = value; } 
    } 
    // Update Result with values so that it can be assigned to datagrid. 

我需要覆盖不追加其为具有类。但每次都附加FinalValue。我该如何解决这个问题?

回答

1

每当您在网格渲染后更新ItemsSource时,您必须致电dataGrid1.Items.Refresh()来更新它。在调用Refresh()之后,datagrid行将反映绑定到它的新集合。

+0

@Despite:谢谢你的关注。真正的问题与更新数据网格无关。即使我已经尝试过Refresh(); 。我的IEnumerable集合每次都会添加。所以尽管我刷新我的datagrid将只显示附加版本。 – BinaryMee

+1

然后,您需要将焦点从数据网格中移开,并查看您正在设置的位置并修改FinalValue的值,因为这些是两个不相关的事情。您可以尝试发布更多的代码,但我可以给出的最好建议是设置很多中断点并仔细观察FinalValue变量。通过这种方式,您可以看到它发生变化的时刻,这对于真正的问题是一个很大的线索。 – Despertar

相关问题