如何创建一个类似于这个错误模板的模板?

4

我在几个网站上看到了一些发布应用程序图片的时候,使用了如下所示的ErrorTemplate样式:

这里输入图片描述

您知道我可以在哪里找到它吗?


这真的是WPF吗?还是一个网站? - Ry-
1
你需要做的是使用Adorners进行查找,这就是你要做的。我没有具体的代码(如果有的话可能会相当大),但这就是实现的方法。 - CodingGorilla
看起来错误模板只是一个红色的Border包围着TextBox,以及包含错误文本的PopupPopup看起来像一种带有CornerRadius使其变圆的面板,具有DropShadow效果、Fill颜色和Path w/ Fill用于<形状。 - Rachel
2个回答

5
我刚刚制作了一个,需要稍微调整一下但是在我的WPF测试应用程序中运行良好(使用.Net 4.0)。实际上,我想要这样的东西来用于我正在开发的应用程序,所以你的问题是一个方便的借口来制作它。=)
此代码使用Validation.ErrorTemplate附加属性创建ControlTemplate,该属性设置红色边框以勾画经过验证的控件,然后使用Popup包含控件的错误消息。我必须从验证的控件的ToolTip属性中获取错误消息,因为模板内部的TextBox似乎无法访问Validation类本身。
当经过验证的控件失去焦点时,弹出式错误消息将关闭,并在再次获得焦点时重新出现(如果存在错误)。
以下是屏幕截图: Screenshot 以下是Gist代码:https://gist.github.com/1672789 我愿意接受任何人提供的评论或改进意见。

3
不错,但当窗口被拖动时,弹出窗口没有跟随移动。 - Dale

1
这看起来很像装饰器。 其思路是在控件上方/附近绘制一些内容,而不受应用于场景的变换影响。
例如,您可以在TextBoxStyle中定义一个装饰器。
类似这样(伪代码):
<Style TargetType="{x:Type TextBox}">
     <Setter Property="Template">
                <Setter.Value>
                   <ControlTemplate TargetType="{x:Type ScrollViewer}">
                       ........
                       ........
                       <AdornerDecorator Grid.Column="0" Grid.Row="0">
                           .........
                           .........
                       </AdorenrDecorator>
                    </ControlTemplate>
                </Setter.Value>
     </Setter>
</Style>

一个完整的示例(针对ScrollViewer,但思路相同)可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接