优雅地处理预期的BindingExpression错误

时间:2015-06-16 12:48:21

标签: wpf xaml data-binding wpf-controls

我有744:00绑定到ComboBox,其中ObservableCollection引用了对象属性DisplayMemberPath

我的Url包含CompositeCollection项,允许用户进行选择:

null

这样可以正常工作(它会产生一个URL下拉列表和一个默认的“无”项),但是在调试时,我有一个错误,因为<ComboBox Grid.Row="7" Grid.Column="1" Height="24" VerticalAlignment="Top" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding SelectedNotificationServer, Mode=TwoWay}" DisplayMemberPath="Url"> <ComboBox.Resources> <CollectionViewSource x:Key="comboBoxSource" Source="{Binding Path=NotificationServers}" /> </ComboBox.Resources> <ComboBox.ItemsSource> <CompositeCollection> <ComboBoxItem Content="None"/> <CollectionContainer Collection="{Binding Source={StaticResource comboBoxSource}}" /> </CompositeCollection> </ComboBox.ItemsSource> </ComboBox> 项上的Url属性不可用:

null

我如何优雅地处理它,即使它不会导致任何运行时问题。它可能只是调试噪音,但仍然令人讨厌。

1 个答案:

答案 0 :(得分:-1)

您的'null'项应该只是您的集合中的项目(与其余项目的类型相同)没有设置属性,或者至少没有显示的属性。这样,您可以一起避免Binding错误,因为您的'null'项具有数据绑定的Url属性。

更新&gt;&gt;&gt;

当您访问其他数据项时,可以像这样设置'null'项目:

NotificationServers.Add(new NotificationServer());
NotificationServers.AddRange(GetNotificationServers());

这将使它成为第一个项目。你也可以这样做:

NotificationServers.Add(new NotificationServer() { DisplayedProperty = "Please Select" });