【发布时间】:2012-06-09 10:24:15
【问题描述】:
在我将ReportSettings 绑定到SettingsProperty 之后,我希望能够通过Settings 属性访问ReportSettings。当我尝试这样做时,我得到一个NullReferenceException。
有谁能帮帮我吗?
ReportSettings 是一个实现INotifyPropertyChanged 的类。
public MyWindow() {
InitializeComponent();
// Load default template
string defaultTemplateName = "default";
foreach (var reportSettings in SettingsCache.Instance.AllReportSettings) {
if (reportSettings.TemplateName.Equals(defaultTemplateName, StringComparison.CurrentCultureIgnoreCase)) {
var binding = new Binding("SettingsProperty") { Source = reportSettings };
SetBinding(SettingsProperty, binding);
var testDirect = reportSettings.IsVisible; // OK
var testDepProp = Settings.IsVisible; // NullReferenceException!!!
//...
}
}
}
public ReportSettings Settings {
get { return (ReportSettings)GetValue(SettingsProperty); }
set { SetValue(SettingsProperty, value); }
}
public static readonly DependencyProperty SettingsProperty = DependencyProperty.Register(
"Settings", typeof(ReportSettings), typeof(MyWindow),
new PropertyMetadata(null, OnSettingsChanged));
更新: 在这个例子中,我可以只使用局部变量,但这个例子只是为了简单地说明问题。问题确实发生在构建之后,我访问了未初始化的“设置”。
【问题讨论】:
标签: c# wpf binding initialization dependency-properties