2013-07-23 8 views
2

У меня есть ComboBox, связанный с ObservableCollection. Как я могу сделать, когда пользователь вводит текст в ComboBox, если элемент отсутствует в списке, код автоматически добавляет новый элемент в список?WPF - Combobox - Добавить элемент, когда пользователь вводит текст в комбо

<ComboBox Name="cbTypePLC" 
      Height="22" 
      ItemsSource="{StaticResource TypePLCList}" 
      SelectedItem="{Binding TypePLC}" IsReadOnly="False" IsEditable="True"> 
</ComboBox> 

ответ

7

Bind Text свойство комбо-поле вашего зрения элемента модели, а затем добавить к связанному коллекции там, вроде бы,

Text="{Binding UserEnteredItem, UpdateSourceTrigger=LostFocus}" 

Измените UpdateSourceTrigger к LostFocus потому что по умолчанию (PropertyChanged) будут общаться друг изменение персонажа в вашей модели просмотра.

// user entered value 
private string mUserEnteredItem; 
public string UserEnteredItem { 
    get { 
     return mUserEnteredItem; 
    } 
    set { 
     if (mUserEnteredItem != value) { 
      mUserEnteredItem = value; 

      TypePLCList.Add (mUserEnteredItem); 

      // maybe you want to set the selected item to user entered value 
      TypePLC = mUserEnteredItem; 
     } 
    } 
} 

// your selected item 
private string mTypePLC; 
public string TypePLC { 
    get { 
     return mTypePLC; 
    } 
    set { 
     if (mTypePLC != value) { 
      mTypePLC = value; 

      // notify change of TypePLC INPC 
     } 
    } 
} 

// your itemsource 
public ObservableCollection <string> TypePLCList { set; private set;} 
Смежные вопросы