WPF と MVVM で使用する ViewModel クラスがあります。
public class ViewModel {
/* Other members here... */
public ReadOnlyObservableCollection<BackplaneViewModel> Backplanes {
get { return _Backplanes; }
}
public BackplaneViewModel CurrentBackplane {
get {
var cb = _CurrentBackplane ?? (_CurrentBackplane = Backplanes.First());
return cb;
}
set {
if (_CurrentBackplane == value) return;
_CurrentBackplane = value;
RaisePropertyChanged("CurrentBackplane");
}
}
}
_Backplanes
コレクションはコンストラクターで作成および設定され、変更されることはありません。
ViewModel
this のインスタンスをとして使用するコントロールがありますDataContext
。ユーザーは を選択できCurrentBackplane
ますComboBox
:
<ComboBox ItemsSource="{Binding Backplanes}"
SelectedItem="{Binding CurrentBackplane}"
DisplayMemberPath="BackplaneIndex" />
のCurrentBackplane
コードも変更される場合があります。
の にブレークポイントを置きget
ますCurrentBackplane
。cb
変数がnull ではありません。WPF
しかし、その値を要求した直後に、出力ウィンドウに次のように表示されます。
System.Windows.Data Information: 40 : BindingExpression path error: 'BackplaneIndex' property not found for 'object' because data item is null. This could happen because the data provider has not produced any data yet. BindingExpression:Path=BackplaneIndex; DataItem=null; target element is 'ComboBox' (Name=''); target property is 'NoTarget' (type 'Object')
System.Windows.Data Information: 19 : BindingExpression cannot retrieve value due to missing information. BindingExpression:Path=BackplaneIndex; DataItem=null; target element is 'ComboBox' (Name=''); target property is 'NoTarget' (type 'Object')
System.Windows.Data Information: 20 : BindingExpression cannot retrieve value from null data item. This could happen when binding is detached or when binding to a Nullable type that has no value. BindingExpression:Path=BackplaneIndex; DataItem=null; target element is 'ComboBox' (Name=''); target property is 'NoTarget' (type 'Object')
System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=BackplaneIndex; DataItem=null; target element is 'ComboBox' (Name=''); target property is 'NoTarget' (type 'Object')
WPF
データ項目が null であると表示されるのはなぜですか?
何が間違っているのかわかりません。プログラムは実際には正常に動作しますが、この問題に関連していると思われるメモリ リークを追跡しようとしています。