2009-07-28 110 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部分)。这样我就可以得到理想的效果。

但是,我不认为这个解决方案是最好的,我仍然希望有一种方法可以做到这一点,而不是一个流氓。

任何建议仍然欢迎!