【问题标题】:How to create a similar template like this for errors?如何为错误创建类似的模板?
【发布时间】:2012-01-24 19:29:20
【问题描述】:

我在几个网站上看到过使用这样的 ErrorTemplate 样式发布其应用程序的一些图像:

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

【问题讨论】:

  • 这真的是 WPF 还是一个网站?
  • 您需要做的是使用 Adorners 进行查找,您就是这样做的。我没有任何具体的代码(如果我有的话可能会相当多),但它就是这样完成的。
  • 看起来错误模板只是TextBox周围的红色Border,以及包含错误文本的PopupPopup 看起来像某种面板,带有 CornerRadius 使其圆形、DropShadow 效果、Fill 颜色和 Path w/ Fill 用于

标签: c# wpf validation idataerrorinfo


【解决方案1】:

我刚刚制作了一个,稍微修改了一下,但它可以在我的 WPF 测试应用程序中运行(使用 .Net 4.0)。对于我正在开发的应用程序,我实际上想要这样的东西,所以你的问题是一个方便的借口。 =)

此代码使用Validation.ErrorTemplate 附加属性创建一个ControlTemplate,该ControlTemplate 设置一个红色边框以勾勒出经过验证的控件,然后是一个包含该控件错误消息的Popup。我必须从已验证控件的 ToolTip 属性中获取错误消息,因为模板中的 TextBox 似乎无法访问 Validation 类本身。

当验证的控件失去焦点时弹出错误消息关闭,并在再次获得焦点时重新出现(如果有错误)。

这是一个屏幕截图:

这里是要点代码:https://gist.github.com/1672789

我愿意接受任何人提供的任何 cmets 或改进。

【讨论】:

  • 很酷,但是拖动时弹出窗口不随窗口移动
【解决方案2】:

这看起来很像Adorner。 这个想法是在控件上方/附近绘制一些东西,它定义的位置也不受应用于场景的变换的影响。

例如,您可以在StyleTextBox 中定义一个装饰器。

类似这样的东西(伪代码):

<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,但是ide是一样的)可以找here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多