2014-06-22 3 views
1

Когда я добавляю в combobox свойство IsEditable="True", он автоматически принимает «Автозаполнение».Auto Suggest ComboBox - MVVM

Есть ли способ добавить к этому методу "Автопредложение" поведение?

Я имею в виду, что при написании в выпадающем списке открывается список опций с надписью.

(если возможно = без разрушения MVVM)

ответ

2

Здесь вы идете

Я пытался добавить авто предложить такое поведение с использованием стандартных выпадающим и анимации

<ComboBox IsEditable="True"> 
    <ComboBoxItem>Orange</ComboBoxItem> 
    <ComboBoxItem>Apple</ComboBoxItem> 
    <ComboBoxItem>Banana</ComboBoxItem> 
    <ComboBoxItem>Cherry</ComboBoxItem> 
    <ComboBox.Triggers> 
     <EventTrigger RoutedEvent="TextBoxBase.TextChanged"> 
      <BeginStoryboard> 
       <Storyboard> 
        <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsDropDownOpen"> 
         <DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:0"/> 
        </BooleanAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </ComboBox.Triggers> 
</ComboBox> 

Передаст попробуйте и дайте мне знать, если это то, что вы ищете, более сложное поведение может потребовать дополнительных усилий.

предложение фильтра Добавить для комбо Items

XAML

<ComboBox IsEditable="True" 
      ItemsSource="{Binding ComboItems}" 
      Text="{Binding ComboText,Mode=OneWayToSource}"> 
    <ComboBox.Triggers> 
     <EventTrigger RoutedEvent="TextBoxBase.TextChanged"> 
      <BeginStoryboard> 
       <Storyboard> 
        <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsDropDownOpen"> 
         <DiscreteBooleanKeyFrame Value="True" 
                KeyTime="0:0:0" /> 
        </BooleanAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </ComboBox.Triggers> 
</ComboBox> 

вид модели

public ICollectionView ComboItems{ get; set; } 

public string ComboText 
{ 
    get 
    { 
     throw new NotImplementedException(); 
    } 
    set 
    { 
     ComboItems.Filter = item => item.ToString().ToLower().Contains(value.ToLower()); 
    } 
} 

вам может понадобиться для фильтрации на основе ваших элементов типов, выше строка значений

для запуска ComboItems

var myItems = new[] { "Apple", "Orange", "Cherry", "Banana" }; 
ComboItems = CollectionViewSource.GetDefaultView(myItems); 

заменить мои пункты с вашей коллекцией

+0

Я ищу авто предложить, это означает любое время вы добавить текст выпадающие открытый с suggestes что фильтр по тексту, который вы написали. –

+0

Вы также пересылаете список комбо-фильтров? возможно, вы можете поделиться некоторыми экранами для получения более подробной информации. – pushpraj

+0

Почему IsTextSearchEnable не может это сделать? –