如何在WPF DataGrid中访问单元级别的ComboBox?

时间:2012-10-16 06:27:46

标签: wpf binding datagrid combobox

我的数据网格列模板中有组合框,如下所示。

<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>

所有组合框都添加了new作为其中一个值为-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和绑定东西的新手&gt;我该如何继续?

1 个答案:

答案 0 :(得分:0)

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

E.g。

  1. 您为什么使用cmbReferece_SRV_SelectionChanged之类的活动,而不是SelectedValue使用SelectedValuePathConverter
  2. 你的ComboBox.ItemsSource是什么?数据表?对象列表?
  3. 为什么要在自己的ItemsSource事件中设置ComboBox的{​​{1}},这会适得其反。
  4. 我知道你是WPF的新手,所以如果你向我解释你的问题,我可以建议一些有用的WPF编码来解决你的问题。