2017-12-14 21 views
2

検索可能なコンボボックスが必要です。私がそれに何かを入力すると、itemlistがフィルタリングされます。 OnTextChangedはこれをかなりうまく行います。 2番目の部分は、コンボボックスリストの中にすべてのアイテムが短い説明で表示されていますが、アイテムを選択すると、そのキーが表示されます。 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

削除はRoleKeyElementVM

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

より良いに以下を追加し

をOnSelectionChanged?

関連する問題