2012-10-16 2 views
0

콤보 상자가있는 데이터 격자 열 템플릿은 아래와 같습니다. WPF 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> 

모든 콤보 상자

값을 가지고 그들에게 하나 개의 항목 -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와 바인딩 stuffs에 새로운> 어떻게 진행할 수 있습니까?

답변

0

위의 코드는 약간 혼란 스럽습니다. 당신은 무엇을하려고하는지 더 설명 할 수 있습니까? 적절한 WPF 프로그래밍 관행에서 몇 가지 편차를 볼 수 있습니다. DataGrid에서 콤보 박스 사용 관련.

예. Converter를 통해 SelectedValueSelectedValuePath를 사용 cmbReferece_SRV_SelectionChanged 아니라 같은

  1. 왜 당신이 사용하는 이벤트?
  2. 또한 ComboBox.ItemsSource은 무엇입니까? DataTable? 객체 목록?
  3. ComboBoxItemsSource을 자체의 SelectionChanged 이벤트에 설정하는 것이 비생산적인 이유는 무엇입니까?

저는 WPF에 익숙하지 않은 것으로 알고 있습니다. 문제를 설명해 주시면 문제를 코딩하는 유용한 WPF 연습을 제안 할 수 있습니다.

+0

콤보 상자 항목 소스는 데이터 가능입니다. 일단 내가 "Add new"항목을 선택하면 새로운 항목이 db에 추가되기 때문에 리 바인딩됩니다. 그 코드 부분은 여기에 표시되지 않습니다 부. 내가 그것을 언급했다.. 새 항목을 추가 한 후 나는 다시 나는 콤보 상자에 추가 된 새 항목을 반영하기 위해 daasource를 rebinding이다. –

관련 문제