我的代码如下所示:
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,它总是返回相同的实例?)
答案 0 :(得分:1)
我认为通常你会使用ItemsSource="{Binding Source={StaticResource myCollectionViewSource}}"
而不是直接将View分配给ItemsSource。这会照顾CollectionViewSource.View
从null更改为某些内容......您是否有理由不在XAML中设置此内容?