2010-12-03 57 views
3

我有一個datagrid和窗體上的組合框。組合框綁定到數據網格的selectedItem。Silverlight DataGrid綁定問題後刷新或設置selectedIndex = -1

我加載的東西很好,如果我選擇不同的行組合框更新正確。

但是,如果在加載後設置datagrid.selectedIndex = -1(使第一行未選中),則組合框不再起作用。這是個問題。

我也有另一種情況發生確切的事情。如果我篩選數據網格,綁定到組合框也停止工作。

我將DataGrid綁定到像CollectionViewSource以下,其中_codes是一個ObservableCollection

   _ocvsCode = (CollectionViewSource)this.Resources["cvsCode"]; 
      _ocvsCode.Source = _codes;     
      dataGrid1.ItemsSource = _ocvsCode.View; 

我不知道爲什麼綁定到ComboBox DataGrid上一些手術後失敗。

+0

注意...我也有一個文本框綁定到網格的selectedItem。它繼續正常工作。它是組合框似乎被打破...奇 – David 2010-12-03 01:58:11

回答

2

在這種情況下,適當的解決方案是將datagrid selecteditem綁定到某個變量,然後將其他控件綁定到該變量。將UIElement屬性直接綁定到其他UIElement屬性通常是不好的做法。這也將調試您將selecteditem屬性強制到組合框時遇到的問題。

0

我碰到過同樣的問題,其中一個ComboBox被綁定到一個DataGrid的SelectedItem的值。

ComboBox控件在其綁定的數據變爲null時中斷,並且不會恢復。我不確定這是爲什麼,但在我看來是一個錯誤。當DataGrid對列進行排序時,它首先將其SelectedItem設置爲null,執行排序,然後將SelectedItem重置爲原始值。當SelectedItem變爲空時,組合框會中斷。

這裏是我的解決方法:

創建你的類,它被用於DataContext的一個SelectedItem屬性。 對setter進行檢查,以防止它被設置爲null。使用DataGrid和ComboBox綁定此屬性。

public YourItem SelectedItem 
{ 
    get { return _selectedItem; } 
    set 
    { 
     if (value == _selectedItem || value == null) 
      return; 

     _selectedItem = value; 
     RaisePropertyChanged("SelectedItem"); 
    } 
}