【发布时间】:2013-02-10 19:49:59
【问题描述】:
我有一个通过 CollectionViewSource 填充的组合框。这些项目是通过传入项目类型(在本例中为 ProjectViewModel)的数据模板构建的。这是 .NET 4.0 中的 WPF。
在我的 window.resources 中,我指定了以下内容:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
尽管有这种风格,但我仍然收到以下错误:
System.Windows.Data 错误:4:找不到绑定源 参考'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', 祖先级别='1''。 BindingExpression:Path=HorizontalContentAlignment; 数据项=空;目标元素是'ComboBoxItem'(名称='');目标 属性是“HorizontalContentAlignment”(类型“HorizontalAlignment”)
System.Windows.Data 错误:4:找不到绑定源 参考'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', 祖先级别='1''。绑定表达式:路径=垂直内容对齐; 数据项=空;目标元素是'ComboBoxItem'(名称='');目标 属性是“VerticalContentAlignment”(类型“VerticalAlignment”)
我也在 ComboBox 元素上指定了水平和垂直 ContentAlignment,但无济于事。这不是一个可怕的问题,因为项目正确显示。但是在调试时,我在关闭窗口时确实会延迟大约 10 秒,同时它会向输出窗口输出大约 4000 条错误消息(我需要打开它才能捕获合法的绑定错误。
我可能没有正确读取错误。为什么找不到绑定的有效来源?据我所知,我使用 ComboBox 和 CollectionViewSource 的方式符合他们的意图。
【问题讨论】:
-
我想有人在这里解决了这个问题:stackoverflow.com/questions/2666439/…
-
@DJBurb 该问题中的两个建议与我在解决方案中的风格基本相同。我已经尝试过 app.xaml 级别的样式,并且尝试将其命名为类型名称。没有变化。 K 圈发生了一些奇怪的事情。
-
我发现 app.xaml 中的样式是唯一可行的方法。它不适用于元素(组合框)、组合框的父级、用户控件、窗口...
标签: wpf data-binding combobox datatemplate