2013-02-15 1 views
2

Я выставил коллекцию и привязал ее к источнику данных autocompletebox, который работает, но выбор или изменение текста на автозаполнении не обновляет модель, как текстовое поле или ярлык!Как связать autocompletebox с моделью в mvvm?

ViewModel:

public ObservableCollection<String> SymptomsDb { get; private set; } 

private String symptom; 

public String Symptom 
{ 
    get { return symptom; } 
    set 
    { 
     symptom = value; 
     RaisePropertyChanged(() => this.Symptom); 
    } 
} 

public AnalysisViewModel() 
{ 
    List<String> s = new List<String>(); 
    s.Add("test"); 
    SymptomsDb = new ObservableCollection<String>(s); 
} 

вид:

<controls:AutoCompleteBox 
    ItemsSource="{Binding SymptomsDb}" 
    SelectedItem="{Binding Symptom}" 
    Text="{Binding Symptom}" 
    IsTextCompletionEnabled="True" 
    FilterMode="Contains"/> 

ответ

8

Чтобы получить изменение от пользовательского интерфейса обратно в ViewModel, вы всегда должны связать свойство TwoWay (за исключением некоторых свойств, таких как TextBox .TextProperty, которые являются TwoWay по default):

<controls:AutoCompleteBox 
    ItemsSource="{Binding SymptomsDb}" 
    SelectedItem="{Binding Symptom, Mode=TwoWay}" 
    Text="{Binding Symptom}" 
    IsTextCompletionEnabled="True" 
    FilterMode="Contains"/> 
+0

Спасибо. Я потерял время, пытаясь понять, почему элемент управления не будет привязывать свойство Text правильно к классу IDataErrorInfo. – andySF