對於依賴外部來源的屬性創建DependencyProperty
,我有點困惑。例如,在超聲應用程序我寫,我現在有一個託管C++包裝以下(翻譯成C#的就在這裏簡單,實現INotifyPropertyChanged的):DependencyProperties其中的值未存儲在本地
public int Gain
{
get { return ultrasound.GetParam(prmGain); }
set
{
ultrasound.SetParam(prmGain, value);
NotifyPropertyChanged("Gain");
}
}
我所有的代碼是在WPF中,我正在考慮如何改變INotifyPropertyChanged
到DependencyProperty
會發生,如果我從這些變化中受益。有大約30個類似於這個變量的變量,其中大部分都會將數據綁定到屏幕滑塊,文本塊或其他控件。
爲了實現此對象的DependencyProperty
,以下內容是否正確?
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");
}
此外,在一個側面說明,我應該想到在大多數的屬性是數據綁定的情況下提高性能,或者說,在案件的性能損失,其中許多參數不是數據綁定?
這就是我在做這件事的時候通過this.Gain(它調用ultrasound.GetParam)的時候做SetValue,並且在值被手動設置的情況下值。我認爲上述邏輯將始終保持最新的本地版本的增益。 – 2009-06-19 14:58:19