我对创建一个DependencyProperty
依赖于外部资源的属性有点困惑。例如,在我正在编写的超声应用程序中,我目前在托管 C++ 包装器中有以下内容(为了简单起见,此处翻译为 C#,实现 INotifyPropertyChanged):
public int Gain
{
get { return ultrasound.GetParam(prmGain); }
set
{
ultrasound.SetParam(prmGain, value);
NotifyPropertyChanged("Gain");
}
}
我所有的代码都在 WPF 中使用,我正在考虑如何更改INotifyPropertyChanged
toDependencyProperty
以及是否会从更改中受益。大约有 30 个变量与此类似,其中大部分都将数据绑定到屏幕上的滑块、文本块或其他控件。
DependencyProperty
以下对于为此对象实现 a 是否正确?
public int Gain
{
get { return ultrasound.GetParam(prmGain); }
set
{
ultrasound.SetParam(prmGain, value);
this.SetValue(GainProperty, value);
}
}
public static readonly DependencyProperty GainProperty = DependencyProperty.Register(
"Gain", typeof(int), typeof(MyUltrasoundWrapper), new PropertyMetadata(0));
我从未见过this.GetValue(GainProperty)
未使用的示例。此外,还有其他功能可能会更改该值。这也是正确的改变吗?
public void LoadSettingsFile(string fileName)
{
// Load settings...
// Gain will have changed after new settings are loaded.
this.SetValue(GainProperty, this.Gain);
// Used to be NotifyPropertyChanged("Gain");
}
另外,附带说明一下,在大多数属性是数据绑定的情况下,我是否应该期望性能提升,或者更确切地说,在许多参数不是数据绑定的情况下性能损失?