C# INotifyPropertyChanged does';属性字段在内部发生变化时不工作
我尝试用类的属性绑定textblock usercontrol,但它只在初始阶段起作用,我已经在类中实现了IPropertyChnaged 在我的课堂上,Feedbackpos(属性字段)会在后台发生变化,我不知道如何解决这个问题 我的班级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
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如果它对您有效,您能将其标记为答案吗?谢谢:-)