2015-06-24 3 views
0

Я довольно новичок в MVVM и wpf. Я использовал простую страницу входа, которая подключается к базе данных для получения сведений о пользователе. В модели представления у меня есть строковое поле, называемое Error, которое хранит любую ошибку, например, неправильный пароль или ошибку соединения, чтобы отображаться в представлении. Я связал ошибку с текстовым блоком. Поэтому при нажатии кнопки входа в систему, если происходит некоторая ошибка, я обновляю текст ошибки. Но проблема в том, что это изменение не отражено.Почему представление не обновляется в привязке?

string _error; 
public string Error 
    { 
     get { return _error; } 
     set { _error = value; } 
    } 

обновляют поле как

_error = "Wrong password!"; 

В представлении:

<TextBlock Text="{Binding Error, UpdateSourceTrigger=PropertyChanged}"/> 

Что такое проблема?

Редактировать: Я прочитал статью о Code Project и реализую ее аналогичным образом. Все еще не работает?

ответ

0

Необходимо отправить событие с измененной недвижимостью из ViewModel. Класс должен реализовать интерфейс INotifyPropertyChanged, который содержит событие, которое необходимо запустить. Параметр события должен быть именем свойства, которое вы изменили.

+0

Я нашел базовый класс модели представления, который реализует INotifyPropertyChange, поэтому в моем представлении определения класса модели я расширяю базовый класс модели представления. Что еще мне нужно делать? – Manoj

+0

@Manoj Вы найдете очень хороший пример того, что делать в документации MSDN. В моем вопросе есть ссылка, которая приведет вас к этому. Взгляните на раздел примеров. – Nitram

0

Добавить интерфейс INotifyPropertyChanged в вашу ViewModel.

Принять рекомендацию для ReSharper реализовать интерфейс для вас (возможно, вам придется установить ReSharper).

В установщике недвижимости добавить OnPropertyChanged("Error");.

Now, if you use Error = "test"; `он запустит setter, который запускает уведомление свойства изменено, что подталкивает изменение в представление, чтобы оно было видно.