Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何避免WPF验证中的错误图标与其他元素重叠_C#_Css_Wpf_Xaml - Fatal编程技术网

C# 如何避免WPF验证中的错误图标与其他元素重叠

C# 如何避免WPF验证中的错误图标与其他元素重叠,c#,css,wpf,xaml,C#,Css,Wpf,Xaml,我正在开发一个WPF应用程序,希望实现验证。 用于显示错误消息等。我正在使用文本框的样式: <Style TargetType="{x:Type TextBox}"> <Setter Property="Height" Value="25"/> <Setter Property="VerticalAlignment" Value="Top"/>

我正在开发一个WPF应用程序,希望实现验证。 用于显示错误消息等。我正在使用文本框的样式:

    <Style TargetType="{x:Type TextBox}">
        <Setter Property="Height"
                Value="25"/>
        <Setter Property="VerticalAlignment"
                Value="Top"/>
        <Setter Property="Validation.ErrorTemplate">
            <Setter.Value>
                <ControlTemplate>
                    <DockPanel LastChildFill="true">
                        <Border Background="Red"
                                DockPanel.Dock="right"
                                Margin="5,0,0,0"
                                Width="20"
                                Height="20"
                                CornerRadius="10"
                                ToolTip="{Binding ElementName=customAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
                            <TextBlock Text="!"
                                       VerticalAlignment="Center"
                                       HorizontalAlignment="Center"
                                       FontWeight="Bold"
                                       Foreground="White">
                            </TextBlock>
                        </Border>
                        <AdornedElementPlaceholder Name="customAdorner"
                                                   VerticalAlignment="Center" >
                            <Border BorderBrush="Red"
                                    BorderThickness="1" />
                        </AdornedElementPlaceholder>
                    </DockPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <!--Additional style trigger for changing the background color of the textbox-->
        <Style.Triggers>
            <Trigger Property="Validation.HasError"
                     Value="true">
                <Setter Property="Background"
                        Value="LightPink"/>
            </Trigger>
        </Style.Triggers>
    </Style>

然后选择项目“Validation\u ValidationRule”作为startproject


提前谢谢

我已更改了您的窗口。参考资料

   <Window.Resources>


    <Style x:Key="myErrorTemplate" TargetType="Control">

        <Setter Property="Validation.ErrorTemplate">

            <Setter.Value>

                <ControlTemplate>

                    <DockPanel LastChildFill="True">

                        <Ellipse DockPanel.Dock="Right"

                             ToolTip="{Binding ElementName=myTextbox,

                                 Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"

                             Width="15" Height="15"

                             Margin="-25,0,0,0"

                             StrokeThickness="1" Fill="Red" >

                            <Ellipse.Stroke>

                                <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">

                                    <GradientStop Color="#FFFA0404" Offset="0"/>

                                    <GradientStop Color="#FFC9C7C7" Offset="1"/>

                                </LinearGradientBrush>

                            </Ellipse.Stroke>



                        </Ellipse>

                        <TextBlock DockPanel.Dock="Right"

                            ToolTip="{Binding ElementName=myControl,

                                 Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"

                            Foreground="White"

                            FontSize="11pt"

                            Margin="-15,5,0,0" FontWeight="Bold">!


                        </TextBlock>

                        <Border BorderBrush="Red" BorderThickness="1">

                            <AdornedElementPlaceholder Name="myControl"/>

                        </Border>

                    </DockPanel>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

        <Style.Triggers>

            <Trigger Property="Validation.HasError" Value="true">

                <Setter Property="ToolTip"

                    Value="{Binding RelativeSource={x:Static RelativeSource.Self},

                    Path=(Validation.Errors)[0].ErrorContent}"/>

            </Trigger>

        </Style.Triggers>

    </Style>

    <Style TargetType="TextBox" BasedOn="{StaticResource myErrorTemplate}" />

    <Style TargetType="CheckBox" BasedOn="{StaticResource myErrorTemplate}" />

    <Style TargetType="ComboBox" BasedOn="{StaticResource myErrorTemplate}" />

</Window.Resources>

!

尝试根据您的需要调整此设置

我已更改了您的窗口。参考资料

   <Window.Resources>


    <Style x:Key="myErrorTemplate" TargetType="Control">

        <Setter Property="Validation.ErrorTemplate">

            <Setter.Value>

                <ControlTemplate>

                    <DockPanel LastChildFill="True">

                        <Ellipse DockPanel.Dock="Right"

                             ToolTip="{Binding ElementName=myTextbox,

                                 Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"

                             Width="15" Height="15"

                             Margin="-25,0,0,0"

                             StrokeThickness="1" Fill="Red" >

                            <Ellipse.Stroke>

                                <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">

                                    <GradientStop Color="#FFFA0404" Offset="0"/>

                                    <GradientStop Color="#FFC9C7C7" Offset="1"/>

                                </LinearGradientBrush>

                            </Ellipse.Stroke>



                        </Ellipse>

                        <TextBlock DockPanel.Dock="Right"

                            ToolTip="{Binding ElementName=myControl,

                                 Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"

                            Foreground="White"

                            FontSize="11pt"

                            Margin="-15,5,0,0" FontWeight="Bold">!


                        </TextBlock>

                        <Border BorderBrush="Red" BorderThickness="1">

                            <AdornedElementPlaceholder Name="myControl"/>

                        </Border>

                    </DockPanel>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

        <Style.Triggers>

            <Trigger Property="Validation.HasError" Value="true">

                <Setter Property="ToolTip"

                    Value="{Binding RelativeSource={x:Static RelativeSource.Self},

                    Path=(Validation.Errors)[0].ErrorContent}"/>

            </Trigger>

        </Style.Triggers>

    </Style>

    <Style TargetType="TextBox" BasedOn="{StaticResource myErrorTemplate}" />

    <Style TargetType="CheckBox" BasedOn="{StaticResource myErrorTemplate}" />

    <Style TargetType="ComboBox" BasedOn="{StaticResource myErrorTemplate}" />

</Window.Resources>

!

试着根据您的需要调整此设置

非常感谢您的Pawel。我在WPF工作了八年,但仍然有一些新的发现。非常感谢Pawel。我在WPF工作了八年,但仍有一些新的发现。