2017-12-14 1 views
2

검색 가능한 콤보 박스를 갖고 싶습니다. 항목에 입력하면 항목 목록이 필터링됩니다. OnTextChanged는 아주 잘합니다. 두 번째 부분은 comboboxlist 안에 모든 항목이 짧은 설명과 함께 표시되지만 항목을 선택하면 키가 표시되기를 원합니다. SelectionChanged에서 그렇게해야하지만, 항목을 선택할 때마다 콤보 상자 입력란을 ""으로 덮어 씁니다.선택 후 WPF Combobox가 텍스트를 잃습니다.

private void OnTextChanged(object sender, TextChangedEventArgs e) 
{ 
    ItemSource = new ObservableCollection<RoleKeyElementVM>(DataSource.Where(x => x.ShortDescription.Contains(RoleKeyCombobox.Text) || x.Key.ToString() == RoleKeyCombobox.Text)); 
    RoleKeyCombobox.ItemsSource = ItemSource; 
} 


private void OnSelectionChanged(object sender, EventArgs e) 
{ 
    RoleKeyElementVM SelectedItem = RoleKeyCombobox.SelectedItem as RoleKeyElementVM; 
    if(SelectedItem != null) 
     RoleKeyCombobox.Text = SelectedItem.Key.ToString(); 
} 

선택은 다음과 같아야합니다 image1

image2

같은 필터링을하는 방법이 ""내 사용자 정의 텍스트를 덮어에서 콤보 상자를 방지 할 수 있습니까?

업데이트 :

은 우리가 얘기하는 콤보

:

<ComboBox 
     Name="RoleKeyCombobox" 
     Margin="5" Grid.Column="2" Grid.Row="0" 
     IsEditable="True" 
     IsSynchronizedWithCurrentItem="False" 
     TextBoxBase.TextChanged="OnTextChanged" 
     SelectionChanged="OnSelectionChanged"> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding ShortDescription}"/> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
    </ComboBox> 
+0

자세한 정보가 필요합니다. xaml 선언 및 사용자 정의 스타일이있는 경우 첨부하십시오. – Mikolaytis

+0

단일 텍스트 입력 필드에 약간의 정보를 압축하려고합니다 ... 키/검색 텍스트를 상자에 넣어야하는 정확한 상태를 설명 할 수 있습니까? – grek40

답변

1

제거가

을 OnSelectionChanged 추가하여 RoleKeyElementVM

public override string ToString() 
{ 
    return this.Key; 
} 

에 다음과 같은 더 나은?

관련 문제