C# 当属性发生内部更改时,如何将控件绑定到属性更改?
我想将控件绑定到实例的属性。但是,此属性将在内部更改,因此INotifyPropertyChanged无法正常工作 例如,我想显示某个容器中当前存在多少元素。所以我的选择是将计数绑定到标签上,或者什么。但即使Count属性已更改为另一个数字,UI也不会更改 我不希望所有的东西都有包装器类,因为包装器不能解决问题的子集。另一个例子是,如果我想知道一个计时器需要多长时间才能过期,它会在内部发生变化,我甚至没有包装器来帮助我C# 当属性发生内部更改时,如何将控件绑定到属性更改?,c#,wpf,C#,Wpf,我想将控件绑定到实例的属性。但是,此属性将在内部更改,因此INotifyPropertyChanged无法正常工作 例如,我想显示某个容器中当前存在多少元素。所以我的选择是将计数绑定到标签上,或者什么。但即使Count属性已更改为另一个数字,UI也不会更改 我不希望所有的东西都有包装器类,因为包装器不能解决问题的子集。另一个例子是,如果我想知道一个计时器需要多长时间才能过期,它会在内部发生变化,我甚至没有包装器来帮助我 那么,当将控件绑定到任何属性时,解决这个问题的一般方法是什么呢?有很多方法
那么,当将控件绑定到任何属性时,解决这个问题的一般方法是什么呢?有很多方法 可以使用要绑定到的控件的databindings属性。以下内容将引导您找到更好的答案: 或者,您可以使用自定义事件,只需在具有控件的窗体上注册这些事件。触发事件时,在必要时处理该事件 例如: 在模型类中:
class myModel
{
public event EventHandler OnNameChanged(object sender, NameChangedEventArgs e); = delegate { };
private _name;
public string Name
{
get { return _name; }
set
{
_name = value;
if (OnNameChanged != null)
OnNameChanged(this, new NameChangedEventArgs(value))
}
}
}
public class NameChangedEventArgs : EventArgs
{
private _name;
public NameChangedEventArgs(string name) { _name = name; }
public Name { get { return _name; } }
}
然后在您的表格中,注册参加活动:
public class form1
{
private myModel model;
public form()
{
Initialize();
}
private void Initialize()
{
model.OnNameChanged += new EventHandler(model_OnNameChangedEvent);
}
private void model_OnNamedChangedEvent(object sender, NameChangedEventArgs e)
{
textbox.text = e.Name;
}
}
现在,当model.Name更改时,将触发模型的OnNameChanged事件。任何已注册到该事件的对象都可以以自己的方式处理它。如果能看到代码的和平,就很好地理解您的问题到底是什么。计时器有一个事件。如果没有事件或可绑定属性,则仍然可以轮询值。是否查看了BindingSource。。?