相关疑难解决方法(0)

如何创建工具提示以显示单个控件的多个验证错误?

我正在尝试通过控件上的工具提示显示控件的多个验证错误,但没有找到执行此操作的方法。

我可以通过具有以下样式的工具提示轻松显示控件的单个验证错误:

<Style TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="True">
                <Setter Property="ToolTip" Value="{Binding Path=(Validation.Errors).CurrentItem.ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
            </Trigger>
        </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

但是,这种方法只让我显示第一个验证错误。我试图在工具提示中获取验证错误列表,但该列表从未显示。以下是我尝试过的方法:

在工具提示中放置一个 ItemsControl,使用 Validation.Errors 作为 ItemsSource 和 CurrentItem.ErrorContent 作为要显示的文本:

<Style TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="Validation.HasError"
                     Value="True">
                <Setter Property="ToolTip">
                    <Setter.Value>
                        <ItemsControl>
                            <ItemsControl.ItemsSource>
                                <Binding Path="(Validation.Errors)" RelativeSource="{x:Static RelativeSource.Self}" />
                            </ItemsControl.ItemsSource>
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding CurrentItem.ErrorContent}" Foreground="Red"/>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 Validation.Errors.CurrentItem 作为 ItemsSource,并使用 ErrorContent 作为要显示的文本:

<Style TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="Validation.HasError"
                     Value="True">
                <Setter Property="ToolTip">
                    <Setter.Value>
                        <ItemsControl>
                            <ItemsControl.ItemsSource>
                                <Binding Path="(Validation.Errors).CurrentItem" RelativeSource="{x:Static RelativeSource.Self}" />
                            </ItemsControl.ItemsSource> …
Run Code Online (Sandbox Code Playgroud)

validation wpf xaml

7
推荐指数
1
解决办法
2304
查看次数

带工具提示的WPF自定义验证器

我想为我的WPF应用程序创建一个自定义验证器模板.

我有一个工具提示模板:

    <ControlTemplate x:Key="ToolTipTemplate" TargetType="ToolTip">
        <Grid Opacity="0.93" MaxWidth="200">
            <Border BorderBrush="Black" BorderThickness="1,1,1,1" CornerRadius="2">
                <Border.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FFF5FAFE" Offset="0"/>
                        <GradientStop Color="#FFE5EFF9" Offset="1"/>
                    </LinearGradientBrush>
                </Border.Background>
                <Border.Effect>
                    <DropShadowEffect Color="#FF393939" />
                </Border.Effect>
                <TextBlock Margin="10,10,10,10"
                    VerticalAlignment="Top"
                    TextWrapping="Wrap"
                    HorizontalAlignment="Left"  
                    Text="{TemplateBinding Content}">
                </TextBlock>
            </Border>
        </Grid>
    </ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

另一个验证模板:

   <ControlTemplate x:Key="GlobalErrorTemplate">
        <DockPanel>
            <Ellipse  x:Name="PART_icon"
                DockPanel.Dock="Right" 
                Margin="2,0"
                Width="10" Height="10">
                <Ellipse.Fill>
                    <LinearGradientBrush>
                        <GradientStop Color="#11FF1111" Offset="0" />
                        <GradientStop Color="#FFFF0000" Offset="1" />
                    </LinearGradientBrush>
                </Ellipse.Fill>
                <Ellipse.ToolTip>
                    <ToolTip Template="{StaticResource ToolTipTemplate}" />                        
                </Ellipse.ToolTip>
            </Ellipse>
            <AdornedElementPlaceholder x:Name="adorner" />
        </DockPanel>
    </ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

控件的样式,例如:

    <Style TargetType="TextBox">
        <Setter Property="Validation.ErrorTemplate" Value="{StaticResource …
Run Code Online (Sandbox Code Playgroud)

validation wpf tooltip controltemplate

6
推荐指数
1
解决办法
5595
查看次数

标签 统计

validation ×2

wpf ×2

controltemplate ×1

tooltip ×1

xaml ×1