2012-07-11 2 views
-1

데이터 집합에 바인딩하는 WPF ComboBox가 있습니다. 컨트롤을 직접 수정할 수있는 권한이 없으며 데이터를 변경할 수 없습니다.WPF ComboBox 잘못된 빈 값

ComboBox에서 1 개 항목이 반환되었지만 실제로는 2 개의 행이 있습니다. 빈 줄과 내 예상 값. 둘 다 인덱스 값이 0 인 것으로 보입니다.이 빈 행을보고 싶지 않습니다. ComboBox의 예상 데이터가 자동 선택되었습니다. 나는 여기에 모든 사람들의 관련 게시물을 살펴 봤지만, 나의 해결책은 아무도 없었다. 나는 오랫동안 프로그래밍을 해왔지만 WPF에 대해서는 아직 상당히 익숙하지 않다. 도와 주셔서 감사합니다.

XAML

<MyComboBox Name="myTemplate5" MyLookup="Lookup" MyFilter="att_idn=-37" MyData="Detail" MyName="comp_tmpl_idn_srt" ModCde="31" MyEmptyValue="0" ToolTip="Have a nice day" Margin="0,2.5,30,2.5" MinWidth="120" Grid.Column="1" SelectionChanged="myTemplate5_SelectionChanged" /> 

C#

private void myTemplate1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    MyComboBox work = sender as MyComboBox; 
    if (work != null && work.HasSelectionChanged(e)) 
    { 
     int compTmplId = int.Parse(work.SelectedValue.ToString()); 
     if (!_wpfIsDumb && !ChangeComponent(compTmplId)) 
     { 
      _wpfIsDumb = true; 
      work.SelectedItem = e.RemovedItems[0]; 
      _wpfIsDumb = false; 
     } 
    } 
} 

public bool HasSelectionChanged(SelectionChangedEventArgs e) 
{ 
    if (e.RemovedItems.Count > 0 && e.AddedItems.Count > 0) 
     return true; 
    else 
     return false; 
} 
+0

답장을 보내 주셔서 감사합니다. 불행히도 바인딩 권한으로 인해 콤보 상자에 새 항목을 추가 할 수 없습니다. 근본 원인은 콤보 상자가 변경되었는지 확인하는 기능입니다. 변경된대로 처리하려면 RemovedItems.Count 및 AddedItems.Count가 모두 0보다 커야합니다. 나는 2 개의 항목을 보았는데, 그 중 하나는 비어있다 (그리고 선택된 항목이다). 실제로 선택한 인덱스가 0 인 이유는 내가 선택한 항목에 관계없이 0이므로 RemovedItems.Count는 항상 0이므로 아무 것도 변경되지 않았다고 생각합니다. –

답변

1

당신은 0으로 selectedIndex의를 설정하여이를 달성 할 수

XAML :

<ComboBox Name="myCB" 
        SelectedIndex="0" 
        MaxWidth="200" MaxHeight="25" /> 

코드 숨김을 :

namespace nsComboBox 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      myCB.Items.Add("Item 1"); 
      myCB.Items.Add("Item 2"); 
      myCB.Items.Add("Item 3"); 

      myCB.SelectedIndex = 0; 
     }  
    } 
} 
2

해결책을 찾았습니다. 선택한 색인이 작동하지 않습니다. 문제는 데이터 때문이었습니다. 상자에 NULL 값이 전달되었습니다. SQL에서 NULL 반환을 제거한 후에 예상대로 작동했습니다.