簡體   English   中英

WPF錯誤模板邊框不顯示所有文本

[英]WPF error template border dont show all text

我的WPF應用程序中有一些錯誤檢查。 錯誤消息顯示在文本框旁邊,但是當該文本框位於應用程序右側時,它不會顯示所有錯誤文本。

結果:

錯誤信息

這是我的錯誤模板樣式:

<ControlTemplate x:Key="errorTemplateStyle">
    <StackPanel Orientation="Horizontal">
        <Border BorderThickness="1" BorderBrush="#FFdc000c" CornerRadius="0.7"
            VerticalAlignment="Top">
            <Grid>
                <Polygon x:Name="toolTipCorner"
                     Grid.ZIndex="2"
                     Margin="-1"
                     Points="6,6 6,0 0,0" 
                     Fill="#FFdc000c" 
                     HorizontalAlignment="Right" 
                     VerticalAlignment="Top"
                     IsHitTestVisible="True"/>
                <Polyline Grid.ZIndex="3"
                      Points="7,7 0,0" Margin="-1" HorizontalAlignment="Right" 
                      StrokeThickness="1.5"
                      StrokeEndLineCap="Round"
                      StrokeStartLineCap="Round"
                      Stroke="White"
                      VerticalAlignment="Top"
                      IsHitTestVisible="True"/>
                <AdornedElementPlaceholder x:Name="adorner"/>
            </Grid>
        </Border>
        <Border x:Name="errorBorder" Background="#FFdc000c" Margin="1,0,0,0"
            Opacity="0" CornerRadius="1.5"
            IsHitTestVisible="False"
            MinHeight="24" MaxWidth="267">
            <Border.Effect>
                <DropShadowEffect ShadowDepth="2.25" 
                              Color="Black" 
                              Opacity="0.4"
                              Direction="315"
                              BlurRadius="4"/>
            </Border.Effect>
            <TextBlock Text="{Binding ElementName=adorner,
                                  Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"
                   Foreground="White" Margin="8,3,8,3" TextWrapping="Wrap"/>
        </Border>
    </StackPanel>
    <ControlTemplate.Triggers>
        <DataTrigger Value="True">
            <DataTrigger.Binding>
                <MultiBinding Converter="{StaticResource BooleanOrConverter}">
                    <Binding ElementName="adorner" Path="AdornedElement.IsKeyboardFocused" />
                    <Binding ElementName="toolTipCorner" Path="IsMouseOver"/>
                </MultiBinding>
            </DataTrigger.Binding>
            <DataTrigger.EnterActions>
                <BeginStoryboard x:Name="fadeInStoryboard">
                    <Storyboard>
                        <DoubleAnimation Duration="00:00:00.15"
                                     Storyboard.TargetName="errorBorder"
                                     Storyboard.TargetProperty="Opacity"
                                     To="1"/>
                        <ThicknessAnimation Duration="00:00:00.15"
                                        Storyboard.TargetName="errorBorder"
                                        Storyboard.TargetProperty="Margin"
                                        FillBehavior="HoldEnd"
                                        From="1,0,0,0"
                                        To="5,0,0,0">
                            <ThicknessAnimation.EasingFunction>
                                <BackEase EasingMode="EaseOut" Amplitude="2"/>
                            </ThicknessAnimation.EasingFunction>
                        </ThicknessAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
            <DataTrigger.ExitActions>
                <StopStoryboard BeginStoryboardName="fadeInStoryboard"/>
                <BeginStoryboard x:Name="fadeOutStoryBoard">
                    <Storyboard>
                        <DoubleAnimation Duration="00:00:00"
                                     Storyboard.TargetName="errorBorder"
                                     Storyboard.TargetProperty="Opacity"
                                     To="0"/>
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.ExitActions>
        </DataTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

您能幫我如何顯示所有錯誤消息嗎?

謝謝雅庫布

解決方案是將彈出窗口用於errorBorder。

工作作風是:

<ControlTemplate x:Key="errorTemplateStyle">
    <StackPanel Orientation="Horizontal">
        <Border BorderThickness="1" BorderBrush="#FFdc000c" CornerRadius="0.7"
            VerticalAlignment="Top">
            <Grid>
                <Polygon x:Name="toolTipCorner"
                     Grid.ZIndex="2"
                     Margin="-1"
                     Points="6,6 6,0 0,0" 
                     Fill="#FFdc000c" 
                     HorizontalAlignment="Right" 
                     VerticalAlignment="Top"
                     IsHitTestVisible="True"/>
                <Polyline Grid.ZIndex="3"
                      Points="7,7 0,0" Margin="-1" HorizontalAlignment="Right" 
                      StrokeThickness="1.5"
                      StrokeEndLineCap="Round"
                      StrokeStartLineCap="Round"
                      Stroke="White"
                      VerticalAlignment="Top"
                      IsHitTestVisible="True"/>
                <AdornedElementPlaceholder x:Name="adorner"/>
            </Grid>
        </Border>
        <Popup x:Name="errorBorder" MinHeight="24" MinWidth="24" MaxWidth="267" Placement="Right" Margin="1,0,0,0" >
            <Border Background="#FFdc000c"
            Opacity="1" CornerRadius="1.5"
            IsHitTestVisible="False"
            MinHeight="24" MaxWidth="267">
                <Border.Effect>
                    <DropShadowEffect ShadowDepth="2.25" 
                              Color="Black" 
                              Opacity="0.4"
                              Direction="315"
                              BlurRadius="4"/>
                </Border.Effect>
                <TextBlock Text="{Binding ElementName=adorner,
                                  Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"
                   Foreground="White" Margin="8,3,8,3" TextWrapping="Wrap"/>
            </Border>
        </Popup>
    </StackPanel>
    <ControlTemplate.Triggers>
        <DataTrigger Value="True">
            <DataTrigger.Binding>
                <MultiBinding Converter="{StaticResource BooleanOrConverter}">
                    <Binding ElementName="adorner" Path="AdornedElement.IsKeyboardFocused" />
                    <Binding ElementName="toolTipCorner" Path="IsMouseOver"/>
                </MultiBinding>
            </DataTrigger.Binding>
            <Setter TargetName="errorBorder" Property="IsOpen" Value="True" />
            <DataTrigger.EnterActions>
                <BeginStoryboard x:Name="fadeInStoryboard">
                    <Storyboard>
                        <DoubleAnimation Duration="00:00:00.15"
                                     Storyboard.TargetName="errorBorder"
                                     Storyboard.TargetProperty="Opacity"
                                     To="1"/>
                        <ThicknessAnimation Duration="00:00:00.15"
                                        Storyboard.TargetName="errorBorder"
                                        Storyboard.TargetProperty="Margin"
                                        FillBehavior="HoldEnd"
                                        From="1,0,0,0"
                                        To="5,0,0,0">
                            <ThicknessAnimation.EasingFunction>
                                <BackEase EasingMode="EaseOut" Amplitude="2"/>
                            </ThicknessAnimation.EasingFunction>
                        </ThicknessAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
            <DataTrigger.ExitActions>
                <StopStoryboard BeginStoryboardName="fadeInStoryboard"/>
                <BeginStoryboard x:Name="fadeOutStoryBoard">
                    <Storyboard>
                        <DoubleAnimation Duration="00:00:00"
                                     Storyboard.TargetName="errorBorder"
                                     Storyboard.TargetProperty="Opacity"
                                     To="0"/>
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.ExitActions>
        </DataTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM