Таким образом, я пытаюсь отобразить сообщение, когда ввод неверен, предположим, что я хочу что-то, кроме ToolTip
, что-то, что остается до исправления ошибки.Я пытался получить ErrorTemplate
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<StackPanel>
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder x:Name="adornedErrorElement" />
</Border>
<Label Background="Red" Foreground="White" FontSize="9" Content="{Binding ElementName=adornedErrorElement, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<StackPanel Margin="20">
<TextBlock Text="Name" />
<TextBox Text="{Binding Name}" />
<TextBlock Text="Email" />
<TextBox Text="{Binding Path=Email, ValidatesOnDataErrors=True}" />
<Button Content="Submit" />
</StackPanel>
Я получаю
, где метка накладывается на элементы после нее.Как сделать так, чтобы он работал так же, как другой элемент в панели стека?
ОБНОВЛЕНИЕ: Использование VSM
Теперь я хочу сделать еще один шаг и анимировать метку ошибки ивниз.Я рассматриваю VSM после ответа @robertos.Я попытался реализовать в Blend.Несколько проблем, с которыми я столкнулся.Я попытался
<ControlTemplate TargetType="{x:Type TextBox}">
<StackPanel Orientation="Vertical">
<Microsoft_Windows_Themes:ListBoxChrome ...>
<VisualStateManager.VisualStateGroups>
...
</VisualStateManager.VisualStateGroups>
<ScrollViewer ... />
</Microsoft_Windows_Themes:ListBoxChrome>
<Label Content="Error Here" />
</StackPanel>
</ControlTemplate>
Затем я потерял доступ к VisualStates в Blend.Затем я попытался
<Microsoft_Windows_Themes:ListBoxChrome>
<StackPanel>
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="2,0,-2,0"/>
<TextBlock x:Name="textBlock" Background="Red" Foreground="White" FontWeight="Bold" Text="Hello" Visibility="Collapsed" />
</StackPanel>
</Microsoft_Windows_Themes:ListBoxChrome>
Не идеально, так как StackPanel находится внутри границы.Также мои попытки анимации выглядят просто странно
http://screenr.com/byk
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0' width = '560' height = '345'> http://screenr.com/Content/assets/screenr_1116090935.swf'> http://screenr.com/Content/assets/screenr_1116090935.swf' flashvars = 'i = 130553'allowFullScreen =' true 'width =' 560 'height =' 345 'pluginspage =' http://www.macromedia.com/go/getflashplayer'>
1-й Я должен сделать метку скрытой, а не свернутую анимацию, просто прозрачность.Я хочу, чтобы ярлык отображался так, как будто он выходит из текстового поля