2009-07-28 118 views
1

嘿!這是我的問題:WPF DataGrid組合框列:在列中傳播標題組合框

我有一個WPF中的Datagrid,我有第一列是DataGridComboBoxColumn。

我想要做的是爲該列還包含一個組合框的標題:改變標題並在列中傳播。

我可以直觀地看到這一點,但是當我提交數據時,與Datagrid綁定的列表不包含新的組合框值。

<dg:DataGridComboBoxColumn SelectedItemBinding="{Binding BIBStatus}"            
          ItemsSource="{Binding Source={StaticResource typeStatus}}" 
          Width="0.20*"> 
        <dg:DataGridComboBoxColumn.HeaderTemplate> 
         <DataTemplate> 
          <StackPanel> 
           <TextBlock Text="Built-In Bridge"/> 
           <ComboBox SelectedItem="{Binding BIBStatus}" 
              SelectionChanged="ComboBox_SelectionChanged" 
              ItemsSource="{Binding Source={StaticResource typeStatus}}"/> 
          </StackPanel>         
         </DataTemplate> 
        </dg:DataGridComboBoxColumn.HeaderTemplate> 
       </dg:DataGridComboBoxColumn> 

在ComboBox_SelectionChanged我有以下代碼:

DataGridColumn comboCol = this.gridResults.Columns[0]; 

     for (int i = 0; i < this.gridResults.Items.Count; i++) 
     { 
      ComboBox myCmBox = (comboCol.GetCellContent(this.gridResults.Items[i]) as ComboBox); 

      myCmBox.SelectedValue = ((ComboBox)sender).SelectedValue; 
     } 

當我提交了數據,我提交的名單是的DataContext到DataGrid;如果我一次更改第一列尋址某一行的值(即,單擊每行中具有組合框的單元格),則這些值將傳播到DataContext中的列表,但是如果我通過標題更改第一列的值它不是。

有誰能告訴我我錯過了什麼嗎?我猜這是我影響每一行的方式,但我嘗試過SelectedValue,SelectedItem和SelectedIndex ......都無濟於事。

在此先感謝...

+0

由於您正在進行雙向數據綁定,因此更改數據源應更改組合框的selecteditem。當你直接設置BIBStatus時會發生什麼? – 2009-07-28 17:17:05

回答

0

我想我可能已經解決了它......或者至少變相它...

DataGridColumn comboCol = this.gridResults.Columns[0]; 

     for (int i = 0; i < this.gridResults.Items.Count; i++) 
     { 
      ComboBox myCmBox = (comboCol.GetCellContent(this.gridResults.Items[i]) as ComboBox); 
      myCmBox.SelectedItem = ((ComboBox)sender).SelectedItem; 
     } 

     if (this._results != null) 
     { 
      foreach (Device device in _results) 
      { 
       device.BIBStatus = (TypeStatus)Enum.ToObject(typeof(TypeStatus), ((ComboBox)sender).SelectedValue); 
      } 
     } 

我試圖改變只爲在DataContext和希望雙向綁定工作,但只有當我專注於每行的組合框時纔會這樣做。所以我想:「爲什麼不是兩種方式?」如您所見,我更改了每個組合框的selecteditem和每個設備的BIB狀態(datacontext部分)。這樣我就可以得到理想的效果。

但是,我不認爲這個解決方案是最好的,我仍然希望有一種方法可以做到這一點,而不是一個流氓。

任何建議仍然歡迎!