我正在尝试设置自定义ComboBox的边距,因为它有验证错误。 这是我试图使用的代码:
<ComboBox x:Class="Emsc.Prestige.Windows.AutoCompleteComboBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="MyComboBox">
<Validation.ErrorTemplate>
<ControlTemplate>
<Border x:Name="ErrorBorder" BorderThickness="2" CornerRadius="2">
<AdornerElementPlaceholder x:Name="adorner"/>
</Border>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=adorner, Converter={StaticResource ErrorContentToErrorTypeConverter}}"
Value="Critical">
<Setter TargetName="ErrorBorder" Property="BorderBrush" Value="Red" />
<Setter TargetName="MyComboBox" Property="Margin" Value="0,0,10,0" />
</DataTrigger>
</ControlTemplate>
</Validation.ErrorTemplate>
</ComboBox>
因此,当我为ErrorBorder元素设置BorderBrush时,它工作正常。但是当我尝试访问MyComboBox的Margin属性(或任何属性)时,我收到以下错误:
属性'TargetName'不代表的有效目标 'Setter'因为找不到名为'MyComboBox'的元素。使 确保在任何Setters,Triggers或之前声明目标 使用它的条件。
我想在XAML中访问MyComboBox的边距而不是后面的代码。 有没有办法通过我的DataTrigger中的Setter访问“TemplatedParent”?
答案 0 :(得分:0)
尝试使用样式元素,类似这样的
<Style TargetType="ComboBox">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Margin" Value="2" />
</Trigger>
</Style.Triggers>
</Style>
将此样式应用于组合框