我正在验证特定范围的TextBox
控件。如果用户输入超出范围的值,则会显示如上图所示的Adorner
控件。
我的问题是控件被切割超出窗口大小。即使窗口尺寸如上所述,如何将红色装饰器放置在窗口上方。
以下是我用于ControlTemplate
和Style
的代码:
<ControlTemplate x:Key="validationTemplate">
<DockPanel LastChildFill="True">
<TextBlock Name="ErrorText" DockPanel.Dock="Bottom" Foreground="White"
FontSize="12" Padding="7" FontFamily="Trebuchet MS"
Margin="5,5,0,0"
TextWrapping="Wrap"
Text="{Binding [0].ErrorContent}" >
<TextBlock.Background>
<SolidColorBrush Color="Red" Opacity="0.95"></SolidColorBrush>
</TextBlock.Background>
</TextBlock>
<AdornedElementPlaceholder Name="ErrorTextBox" />
</DockPanel>
</ControlTemplate>
<Style x:Key="ValidationStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Color="Red" ShadowDepth="5" Direction="135" Opacity="0.5"></DropShadowEffect>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
请帮忙。
答案 0 :(得分:0)
好吧,我不知道Adorner
可以在窗口之外呈现,因此对于您的问题,您不能将Adorner
放在窗口之外。
但是,当您需要这样的行为时,通常会使用弹出窗口。只需将所有内容包装到Popup
元素中,看看它是否有帮助。