0

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

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

所有组合框都有 Add 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 和绑定材料的新手 > 我该如何继续?

4

1 回答 1

0

你上面的代码有点混乱。你能解释更多你想做什么。我可以看到一些与正确的 WPF 编程实践的偏差,尤其是。关于在数据网格中使用组合框。

例如

  1. 你为什么使用事件 likecmbReferece_SRV_SelectionChanged而不是使用SelectedValueand SelectedValuePathvia Converter
  2. 还有你的是什么ComboBox.ItemsSource?数据表?对象列表?
  3. 你为什么要在自己的事件中设置ItemsSource一个,这会适得其反。ComboBoxSelectionChanged

我了解您是 WPF 新手,所以如果您向我解释您的问题,我可以建议一些有用的 WPF 编码实践来解决您的问题。

于 2012-10-16T10:31:04.860 回答