1

私のコードは次のようになります。

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以外を返すと、常に同じインスタンスを返すと思いますか?)

4

1 に答える 1

1

ItemsSource="{Binding Source={StaticResource myCollectionViewSource}}"通常は、ビューをItemsSourceに直接割り当てる代わりに使用すると思います。これCollectionViewSource.Viewにより、nullから何かへの変更が処理されます...これをすべてXAMLで設定しない理由はありますか?

于 2012-10-03T07:57:32.783 に答える