INotifyPropertyChanged не работает при внутреннем изменении поля свойства - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь связать пользовательский контроль над текстовым блоком со свойством моего класса, но он работает только на начальном этапе, в моем классе реализован IPropertyChnaged.

В моем классе _Feedbackpos (поле свойства) изменилось бы вфон, я не знаю, как решить эту проблему.

мой класс

public class TestControl : INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;
  private void NotifyPropertyChanged(string propertyname)
  {
     if(PropertyChanged != null)
     {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
     }
  }

  private double _Feedbackpos;
  public double Feedbackpos
  {
     get 
     {
       return _Feedbackpos;
     }
     set
     {
       _Feedbackpos = value;
       NotifyPropertyChanged("Feedbackpos");
     }
  }

  //it's a callback function, it would excute when detect feedback position of controller change
  private void ReadFeedbackpos()
  {
    _Feedbackpos = Controller.Read();
  }

}

окна приложений

TestControl TestDll = new TestControl();

Binding BindingTxtBlk = new Binding(){Source= TestDll, Path = new Property("Feedbackpos")};

FeedbackPosTxtBlk.Setbinding(Textblock.TextProperty,BindingTxtBlk);

1 Ответ

2 голосов
/ 13 мая 2019

Измените функцию ReadFeedbackpos() на

private void ReadFeedbackpos()
{
    Feedbackpos = Controller.Read();
}

В противном случае NotifyPropertyChanged("Feedbackpos"); никогда не вызовут.

...