我工作在一个大的WPF项目和调试我的输出窗口中充满了这些恼人的警告:如何摆脱恼人的HorizontalContentAlignment绑定警告?
System.Windows.Data信息:10:使用绑定和没有有效>回退值无法检索值存在;改为使用默认值。 BindingExpression:Path = HorizontalContentAlignment;的DataItem = NULL;目标元素是 'ComboBoxItem'(Name ='');目标属性是“HorizontalContentAlignment”(式>“ 的HorizontalAlignment”)
在特定示例中ComboBoxItem以这种方式称呼:
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Border
Name="bd"
Padding="4,4,4,4"
SnapsToDevicePixels="True"
CornerRadius="2,2,2,2">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="true">
<Setter TargetName="bd" Property="Background" Value="{StaticResource MediumBrush}"/>
<Setter TargetName="bd" Property="Padding" Value="4,4,4,4"/>
<Setter TargetName="bd" Property="CornerRadius" Value="2,2,2,2"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我知道问题是由默认主题定义生成包含类似事情ComboBoxItem:
<Setter Property="Control.HorizontalContentAlignment">
<Setter.Value>
<Binding Path="HorizontalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl, AncestorLevel=1}" />
</Setter.Value>
</Setter>
但我也想到用
<Setter Property="OverridesDefaultStyle" Value="True"/>
会照顾到问题,而是警告仍然存在。
编辑:为了重现您也需要重写组合框的完全一样,从MSDN在这个例子中所做的作风问题: ComboBox ControlTemplate Example
任何帮助,非常感谢
我无法重现您的问题,这个XAML既不在4.0也不在3.5。它运行良好,没有任何绑定警告。 – majocha 2010-04-19 19:11:51
你是对的,我单独测试,它不给我警告,我编辑问题的更多细节 – Drake 2010-04-20 09:25:43
我看不到你在编辑链接的例子中有问题的绑定。 – majocha 2010-04-20 12:09:55