2012-10-16 61 views
0

我的数据网格列模板具有组合框在它下面。如何在WPF DataGrid中使用单元格级组合框?

<my:DataGridTemplateColumn x:Name="dgColReferece" Header="References" > 
    <my:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
       <ComboBox x:Name="cmbReferece_SRV" Loaded="cmbReferece_SRV_Loaded" Width="160" SelectionChanged="cmbReferece_SRV_SelectionChanged" 
                 IsTextSearchEnabled="True" SelectedValue="{Binding Reference, Mode=TwoWay}" > 
       </ComboBox> 
      </DataTemplate> 
    </my:DataGridTemplateColumn.CellTemplate> 
</my:DataGridTemplateColumn> 

所有的组合框都添加了新的一个项目,它们的值为-2。当用户点击添加一个新的项目添加到数据库,并应该反弹到网格中的所有组合框。

下面是背后SelectionChanged

private void cmbReferece_SRV_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { ComboBox objComboBox = (ComboBox)sender; 

     if (objComboBox.SelectedValue.ToString() == "<-- Add New -->") 
     { 
      //code for saving new item entered by user to database 

      if (IsSaved) 
      { 
       DataSet dsReference = (DataSet)GetFStdReference(); 

       CommonCalls.BindDropDownList(cmbReferece_SRV, dsReference.Tables[0], "Reference", "Reference"); 
      } 

      objComboBox.SelectedValue = -1; 

     } 

    } 

这将在新项目仅绑定到所选行的组合框我的代码。但我需要它绑定到所有组合框?我怎样才能做到这一点。我是新来的wpf和绑定的东西>我如何继续?上述

回答

0

你的代码是一个有点混乱。你能解释一下你想做什么吗?我可以看到与正确的WPF编程实践有些偏差。关于在datagrid中使用组合框。

E.g.

  1. 你为什么要使用的事件,如cmbReferece_SRV_SelectionChanged和不使用通过ConverterSelectedValueSelectedValuePath
  2. 还有什么是你ComboBox.ItemsSource?数据表?对象列表?
  3. 你为什么要在自己的SelectionChanged事件,这是适得其反设置ComboBoxItemsSource

我知道你是WPF的新手,所以如果你向我解释你的问题,我可以推荐一些有用的WPF编码实践。

+0

组合框项目源数据表。我正在重新绑定,因为一旦他选择了“添加新的”项目,一个新的项目被添加到数据库中。该代码部分没有显示在这里埠我提到它。因此,在添加一个新的项目后,我再次重新绑定的Daasource反映组合框中添加新项目 –

相关问题