バインドReportSettings
した後、プロパティを介してSettingsProperty
アクセスできるようになると思います。そうしようとすると、が表示されます。誰かがここで私を助けることができますか?ReportSettings
Settings
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));
更新:この例では、ローカル変数を使用できますが、この例は問題を簡単に説明するためのものです。この問題は、初期化されていない「設定」にアクセスする構築後に実際に発生します。