Может быть не право титула на вопрос, но я попытаюсь объяснить: Мой TextBox уже привязан к собственности, как:Динамическое связывание?
class MyViewModel : INotifyPropertyChanged
public string TextVal
{
get
{
if (View != null)
{
return View.Model.TextForValueField; // other satrts
}
return defaultModel.TextForValueField;// first start
set
{
.....//some setters logic with View.Model.TextForValueField
}
}
Когда программа начинает не открыто, так геттер связывает значение из поле для значения в модели по умолчанию, и это правильно, но затем, когда я открываю новый View
, мой геттер правильно возвращает значения из соответствующего View.Model.TextForValueField
, но в поле TextBox на моем ленточном меню окна отображается начальное значение из модели по умолчанию (?) Зачем?? XAML для связывания является:
<Setter Property="Text" Value="{Binding MyViewModel.TextVal, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Возможно, есть способ вызова поглотителя еще раз, когда начинается View? Что-то вроде «Обновить» для лент?
Моя собственность функция
protected void RaisePropertyChanged(string propName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propName));
}
}
Вы должны реализовать интерфейсы INotifyPropertyChanged, если ваши свойства программно изменяются, чтобы обновить элементы управления графическим интерфейсом. – mcy
Позвольте мне перефразировать ваш вопрос, когда «TextForValueField» изменен, ваш «TextBox» (привязанный к «TextVal') не обновляется, правильно? – Sinatr
Вы вызываете свой метод 'RaisePropertyChanged' в' set' accessor, правильно? – mcy