我工作在一個大的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