У меня есть следующий стиль для проверки ввода в моем управлении:WPF ControlTemplate Высота
<Style x:Key="MyErrorTemplate" TargetType="Control">
<Style.Setters>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate x:Name="ControlErrorTemplate">
<StackPanel Orientation="Vertical" Height="Auto">
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="Red" FontSize="20">!</TextBlock>
<AdornedElementPlaceholder x:Name="Holder"/>
</StackPanel>
<Label Foreground="Red" Content="{Binding ElementName=Holder,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
Если ошибка происходит, то сообщение об ошибке в метке под контролем (например, текстовое поле) появляется и перекрывает ниже контроль. Я сделал StackPanel Height = "Auto", но это не помогло. Каждый элемент управления находится в ячейке Grid, а высота строки Grid также Auto. Не могли бы вы рассказать мне, что мне не хватает? Я хочу, чтобы сообщение об ошибке нажало то, что ниже. Спасибо.
Благодарим вас за ответ. Означает ли это, что ничего нельзя сделать, чтобы вести себя так, как мне хотелось бы? –
Думаю, вам нужно перенести свой ярлык на слой с украшенным элементом (под вашим контролем) и вызвать его видимость с помощью [Validation.HasError Attached Property] (http://msdn.microsoft.com/en-us/library/system. windows.controls.validation.haserror.aspx) и BooleanToVisibilityConverter. – LPL
Большое спасибо. –