我正在尝试调试我的 MVVM 程序(基于 Josh Smith)中的一些数据绑定/性能问题。有很多不同列表和对象的并发加载,所以我一直在使用 isAsync 和一些线程来提高性能和网络瓶颈。
但是,我注意到很多消息是从 ItemsSource 绑定输出的回退值。对于命令,我创建了一个禁用命令的虚拟命令,并且对于大多数事情,我可以绑定到已知的回退原语类型。当我将 ItemsSource 的后备绑定到 {x:Null} 时,问题似乎出现了。
注意:这发生在很多地方,而不仅仅是 chartingToolkit 控件
A first chance exception of type 'System.NotSupportedException' occurred in PresentationFramework.dll
A first chance exception of type 'System.Xaml.XamlObjectWriterException' occurred in System.Xaml.dll
System.Windows.Data Information: 41 : BindingExpression path error: 'LineValueList' 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=LineValueList; DataItem=null; target element is 'LineSeries' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')
System.Windows.Data Information: 20 : BindingExpression cannot retrieve value due to missing information. BindingExpression:Path=LineValueList; DataItem=null; target element is 'LineSeries' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')
System.Windows.Data Information: 21 : 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=LineValueList; DataItem=null; target element is 'LineSeries' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')
<chartingToolkit:LineSeries DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding Path=LineValueList,IsAsync=True,FallbackValue={x:Null}}">
我的问题:
- 这些消息令人担忧吗?我的很多最终用户都有旧机器(并且拒绝升级-.-),所以我一直在努力最大限度地提高性能。
- 创建虚拟基类型并从 App.xaml 引用它们是否安全?
- 我对这些列表中的大多数进行了数据模板化,这是造成这种情况的原因吗?
提前致谢。