在TextBox控件上进行验证时出现arorner问题

时间:2013-07-07 06:36:58

标签: wpf validation textbox adorner

enter image description here

我正在验证特定范围的TextBox控件。如果用户输入超出范围的值,则会显示如上图所示的Adorner控件。

我的问题是控件被切割超出窗口大小。即使窗口尺寸如上所述,如何将红色装饰器放置在窗口上方。

以下是我用于ControlTemplateStyle的代码:

<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>

请帮忙。

1 个答案:

答案 0 :(得分:0)

好吧,我不知道Adorner可以在窗口之外呈现,因此对于您的问题,您不能将Adorner放在窗口之外。

但是,当您需要这样的行为时,通常会使用弹出窗口。只需将所有内容包装到Popup元素中,看看它是否有帮助。