Я пытаюсь установить маржу моего настраиваемого ComboBox, когда у него есть ошибка проверки. Вот код, который я пытаюсь использовать:WPF ControlTemplate, который я использую для Validation.ErrorTemplate, не может получить доступ к родительскому элементу управления
<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>
Так что, когда я установил BorderBrush для элемента ErrorBorder, он отлично работает. Но когда я пытаюсь получить доступ к свойству Margin (или какое-либо имущество) моего MyComboBox, я получаю следующее сообщение об ошибке:
The property 'TargetName' does not represent a valid target for the 'Setter' because an element named 'MyComboBox' was not found. Make sure that the target is declared before any Setters, Triggers or Conditions that use it.
Я хотел бы получить доступ к Маржа MyComboBox в XAML, а не в коде позади. Есть ли способ получить доступ к «TemplatedParent» через Setter в моем DataTrigger?