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>

すべてのコンボ ボックスには、値が -2 の Add new が 1 つの項目として含まれています。ユーザーが [新規追加] をクリックすると、新しいアイテムがデータベースに追加され、グリッド内のすべてのコンボボックスに再バインドされます。

以下は私のコードビハインドです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. andをcmbReferece_SRV_SelectionChanged使用せずに like のイベントを使用するのはなぜですか?SelectedValueSelectedValuePathConverter
  2. また、あなたは何ComboBox.ItemsSourceですか?データ表?オブジェクトのリスト?
  3. 独自のイベントでを設定するItemsSourceのはなぜですか。これは非生産的です。ComboBoxSelectionChanged

あなたが WPF を初めて使用することを理解しています。問題を説明していただければ、問題のコーディングに役立つ WPF プラクティスをいくつか提案できます。

于 2012-10-16T10:31:04.860 に答える