2013-01-24 33 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

相關問題