当我的自定义 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”的元素。确保在使用它的任何设置器、触发器或条件之前声明目标。
我想在 XAML 中而不是在后面的代码中访问 MyComboBox 的边距。有没有办法通过我的 DataTrigger 中的 Setter 访问“TemplatedParent”?