私のコードは次のようになります。
var telemetry = new CollectionViewSource();
telemetry.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
SetTelemetryFilters(telemetry);
var binding = new Binding("Asset.TelemetryDefinitions.Values");
binding.Source = this;
var expression = BindingOperations.SetBinding(telemetry, CollectionViewSource.SourceProperty, binding);
このコードの直後に、を設定していComboBox.ItemsSource = telemetry.View
ます。IEnumerable
ビューは実装されていますが、CollectionViewSourceは実装されていないため、(複数の場所で)ビューが必要です。ソフトウェアが最初に実行されるとき、Asset
プロパティはnullです。これにより、telemetry.Viewがnullを返すため、問題が発生します。これは、ItemsSourceがnullに設定されたことを意味します。バインディング操作がCollectionViewSource.Sourceにnullを返す場合に、CollectionViewSource.Viewが空のビューを返すようにする方法はありますか?(そして、CollectionViewSource.Viewがnull以外を返すと、常に同じインスタンスを返すと思いますか?)