首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认ErrorTemplate与自定义ErrorTemplate一起显示

默认ErrorTemplate与自定义ErrorTemplate一起显示
EN

Stack Overflow用户
提问于 2014-09-24 13:03:17
回答 1查看 667关注 0票数 1

我有一个定制的Validation.ErrorTemplate,由于某种原因,WPF会同时显示我的自定义错误模板和默认的错误模板。它们都显示了与预期相同的错误,但是我不想显示默认的ErrorTemplate。

我的代码:

代码语言:javascript
复制
<Style TargetType="TextBox" x:Key="MyTextBox">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <Grid>
                    <Border BorderBrush="red" BorderThickness="1" Background="#11FF0000" IsHitTestVisible="False" x:Name="errorBorder"/>
                    <AdornedElementPlaceholder x:Name="placeholder" />
                    <Popup AllowsTransparency="True" HorizontalAlignment="Right" HorizontalOffset="0" VerticalOffset="0" PopupAnimation="Fade" Placement="Right"
                               PlacementTarget="{Binding ElementName=errorBorder}" IsOpen="{Binding ElementName=placeholder, Path=AdornedElement.IsFocused, Mode=OneWay}">
                        <StackPanel Orientation="Horizontal">
                            <Polygon  VerticalAlignment="Center" Points="0,4,4,4" Fill="red" Stretch="Fill" Stroke="red"
                                  StrokeThickness="2" />
                            <Border Background="red" CornerRadius="0" Padding="4">
                                <TextBlock HorizontalAlignment="Center" Foreground="white" FontWeight="Bold" Margin="2,0,0,0"
                                               Text="{Binding ElementName=placeholder, Path=AdornedElement.ToolTip, Mode=OneWay}" />
                            </Border>
                        </StackPanel>
                    </Popup>
                </Grid>
            </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>

还有这个

代码语言:javascript
复制
<Style TargetType="TextBox" BasedOn="{StaticResource MyTextBox}"/>

我想知道是否有人知道为什么WPF同时显示我的错误模板和默认模板。

编辑http://i58.tinypic.com/a14k6q.png -显示两个错误的图片

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-24 13:28:50

因为您定义了ErrorTemplate并在您的样式中使用了Validation.HasError触发器,所以您可以使用其中之一。如果您想使用ErrorTemplate,您需要删除触发器,并将文本绑定更改为"Path=AdornedElement.Validation.Errors).CurrentItem.ErrorContent",那么您将只看到ErrorTemplate的结果。

代码语言:javascript
复制
<Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <Grid>
                    <Border/>
                    <AdornedElementPlaceholder x:Name="placeholder" />
                    <Popup>
                        <StackPanel>
                            <Polygon/>
                            <Border>

             <TextBlock Text="{Binding ElementName=placeholder, 
                        Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent,
                        Mode=OneWay}" />
                            </Border>
                        </StackPanel>
                    </Popup>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26017678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档