I'm a little confused on creating a DependencyProperty
for properties that depend on external sources. For example, in an ultrasound application I'm writing, I currently have the following in a Managed C++ wrapper (translated to C# for simplicity on here, implementing INotifyPropertyChanged):
public int Gain
{
get { return ultrasound.GetParam(prmGain); }
set
{
ultrasound.SetParam(prmGain, value);
NotifyPropertyChanged("Gain");
}
}
All my code is used in WPF, and I was considering how changing the INotifyPropertyChanged
to DependencyProperty
would happen, and if I'd benefit from the changes. There are around 30 variables similar to this one, most of which get databound to an on-screen slider, textblock, or other control.
Would the following be correct for implementing a DependencyProperty
for this object?
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));
I've never seen an example where this.GetValue(GainProperty)
wasn't used. Also, there are other functions that may change the value. Would this be the correct change as well?
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");
}
Also, on a side note, should I expect performance gains in cases where most of the properties are databound, or rather, performance loss in cases where many parameters are NOT databound?