Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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# 如何为错误创建类似的模板?_C#_Wpf_Validation_Idataerrorinfo - Fatal编程技术网

C# 如何为错误创建类似的模板?

C# 如何为错误创建类似的模板?,c#,wpf,validation,idataerrorinfo,C#,Wpf,Validation,Idataerrorinfo,我在几个网站上看到过,它们使用类似以下的错误模板样式发布应用程序的一些图像: 你知道我在哪里能找到它吗?这看起来很像。 这样做的目的是在控件的定义位置上方/附近绘制一些对象,这些对象也不受应用于场景的变换的影响 例如,您可以在文本框的样式中定义装饰器 类似这样的内容(伪代码): ........ ........ 我刚刚创建了一个,进行了一些修补,但它可以在我的WPF测试应用程序中工作(使用.Net 4.0)。事实上,我想在我正在开发的应用程序中使用类似的东西,所以你的问题是一个方便的借口

我在几个网站上看到过,它们使用类似以下的错误模板样式发布应用程序的一些图像:

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

这看起来很像。 这样做的目的是在控件的定义位置上方/附近绘制一些对象,这些对象也不受应用于场景的变换的影响

例如,您可以在
文本框
样式
中定义装饰器

类似这样的内容(伪代码):


........
........

我刚刚创建了一个,进行了一些修补,但它可以在我的WPF测试应用程序中工作(使用.Net 4.0)。事实上,我想在我正在开发的应用程序中使用类似的东西,所以你的问题是一个方便的借口

此代码使用
Validation.ErrorTemplate
attached属性创建一个
ControlTemplate
,该属性设置一个红色边框来勾勒已验证控件的轮廓,然后创建一个包含控件错误消息的
弹出窗口。我必须从已验证控件的
工具提示
属性中获取错误消息,因为模板中的
文本框
似乎无法访问
验证
类本身

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

以下是一个屏幕截图:

以下是代码要点:


我愿意接受任何人提出的任何意见或改进。

这真的是WPF还是一个网站?你需要做的是使用Adorners进行查找,这就是你要做的。我没有任何特定的代码(如果我有,可能会有相当多的代码),但就是这样做的。看起来错误模板只是
文本框
周围的一个红色
边框
,以及一个包含错误文本的
弹出窗口
弹出窗口
看起来像某种面板,具有使其变圆的
拐角半径
,一种
阴影
效果,一种
填充
颜色,以及
路径
w/
填充
,但在拖动时,弹出窗口不会随窗口移动
<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>