Обновить поле при изменении свойства - PullRequest
1 голос
/ 28 апреля 2009

Это, наверное, основной вопрос, так как я новичок в WPF ..

У меня есть UserControl, который содержит TextBox и кнопку (код для этого вопроса упрощен):

<UserControl x:Name="this">
    <TextBox Text="{Binding ElementName=this, Path=MyProperty.Value}"/>
    <Button x:Name="MyButton" Click="Button_Click"/>
</UserControl>

В коде позади я зарегистрировал "MyProperty" как DependencyProperty:

public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(MyProperty), typeof(MyPropertyNumeric), new UIPropertyMetadata(null));

MyProperty - это определенный мной класс, который реализует INotifyPropertyChanged. «MyProperty.Value» имеет тип объекта.

Когда кнопка нажата, я изменяю MyProperty.Value в коде позади. Я хочу, чтобы TextBox автоматически показывал новое значение. Я ожидал бы, что вышеупомянутое будет работать, так как я реализовал INotifyPropertyChanged - но это не так .. Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

1 голос
/ 28 апреля 2009

Вы вызываете событие OnPropertyChanged с именем вашего свойства при его обновлении?

Например,

public class MyProperty : INotifyPropertyChanged {
  private string _value;

  public string Value { get { return _value; } set { _value = value; OnPropertyChanged("Value"); } }

  public event PropertyChangedEventHandler PropertyChanged;

  protected void OnPropertyChanged(string name) {
    PropertyChangedEventHandler handler = PropertyChanged;
    if(handler != null) {
      handler(this, new PropertyChangedEventArgs(name));
    }
  }
}

Важно убедиться, что событие PropertyChanged вызвано именем свойства, которое вы хотите обновить.

0 голосов
/ 28 апреля 2009

попробуйте добавить в режим привязки = "OneWay", я не уверен, что по умолчанию

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