当我们在验证控件模板中使用AdornedElementPlaceholder时,它到底是做什么用的?

16
阅读了几篇关于使用AdornedElementPlaceholder的文章和示例后,我仍然不清楚它在XAML验证中具体起到了什么作用。
2个回答

22

如果您使用验证,您需要向用户展示哪些内容未通过验证,这就是 AdornedElementPlaceholder 发挥作用的地方。它是一个占位符,其大小与您正在验证的 UI 元素完全相同。

假设您正在验证用户在 TextBox 上的输入,并希望在验证失败时在 TextBox 周围显示一个红色框。为 TextBox 定义 ValidationRule 和验证模板。如果 ValidationRule 失败,则在您的 TextBox 上显示 Validation.ErrorTemplate。在模板中,AdornedElementPlaceholder 告诉 Framework 在 UI 中放置您的模板的位置。在我们的情况下,该模板可能如下所示:

<ControlTemplate>
    <Border BorderBrush="Red" BorderThickness="1">
        <AdornedElementPlaceholder />
    </Border>
</ControlTemplate> 

你应该阅读这篇文章


1
你的意思是它将会和UIElement一样大吗?还有一个问题,你说的这行代码“在模板内,AdornedElementPlaceholder告诉框架在哪里放置你的模板。”是什么意思? - Neha
请参考喜欢的文章以获取示例。 - Marcel B
1
模板本身不知道它应该在哪里绘制。占位符将模板链接到UI元素。最好的方法是尝试一下。在占位符内放置一些内容,并在占位符周围放置一些内容,以查看它的工作原理。 - Marcel B
讲解得很清楚,谢谢。 - RAMM-HDR

2
我认为AdornedElementPlaceholder用于显示“验证指示器元素”相对于被验证的控件的位置。 例如,如果您有一个文本框,当验证失败时,在框右侧出现一个红色X,我认为(虽然不是100%),AdornedElementPlaceholder负责该位置定位。

表示在ControlTemplate中使用的元素,用于指定装饰控件相对于ControlTemplate中其他元素的位置。

Source: http://msdn.microsoft.com/en-us/library/system.windows.controls.adornedelementplaceholder(v=vs.110).aspx


1
我已经访问了这个链接,但是仍然不清楚它是如何实现的? - Neha

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