Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# INotifyPropertyChanged does';属性字段在内部发生变化时不工作_C#_Wpf_Properties_Field - Fatal编程技术网

C# INotifyPropertyChanged does';属性字段在内部发生变化时不工作

C# INotifyPropertyChanged does';属性字段在内部发生变化时不工作,c#,wpf,properties,field,C#,Wpf,Properties,Field,我尝试用类的属性绑定textblock usercontrol,但它只在初始阶段起作用,我已经在类中实现了IPropertyChnaged 在我的课堂上,Feedbackpos(属性字段)会在后台发生变化,我不知道如何解决这个问题 我的班级 public class TestControl : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void No

我尝试用类的属性绑定textblock usercontrol,但它只在初始阶段起作用,我已经在类中实现了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);


将函数
ReadFeedbackpos()
更改为

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

否则
NotifyPropertyChanged(“Feedbackpos”)永远不会被调用。

将函数
ReadFeedbackpos()
更改为

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

否则
NotifyPropertyChanged(“Feedbackpos”)
永远不会被调用。

“但它只在初始阶段起作用”请定义此语句如果希望引发属性更改事件,则应使用属性
Feedbackpos
来设置值,而不是字段。如果不调用
属性的
Setter
,则,您希望如何执行
Setter
中的代码?仅供参考-
NotifyPropertyChanged(“Feedbackpos”)
不限于在
Setter中调用
您可以在任何地方调用它,因此只需调用
NotifyPropertyChanged(“Feedbackpos”)即可扩展
ReadFeedbackpos
C#
中没有魔力。如果不调用
PropertyChanged(这是新的PropertyChangedEventArgs(propertyname))
-
PropertyChanged
事件将不会引发。“但它仅在初始阶段起作用”请定义此语句如果要引发属性更改事件,应使用属性
Feedbackpos
来设置值,而不是字段。如果不调用
属性的
Setter
,则,您希望如何执行
Setter
中的代码?仅供参考-
NotifyPropertyChanged(“Feedbackpos”)
不限于在
Setter中调用
您可以在任何地方调用它,因此只需调用
NotifyPropertyChanged(“Feedbackpos”)即可扩展
ReadFeedbackpos
C#
中没有魔力。如果不调用
PropertyChanged(这是新的PropertyChangedEventArgs(propertyname))
-
PropertyChanged
事件将不会引发。非常感谢!在我将ReadFeedbackpos()中的_Feedbackpos更改为Feedbackpos,并将NotifyPropertyChanged更改为ReadFeedbackpos()后,它就可以工作了。@JFChang如果它对您有效,您能将其标记为答案吗?谢谢:-)非常感谢!在我将ReadFeedbackpos()中的_Feedbackpos更改为Feedbackpos,并将NotifyPropertyChanged更改为ReadFeedbackpos()后,它就可以工作了。@JFChang如果它对您有效,您能将其标记为答案吗?谢谢:-)