使用像这样的xaml:
<Grid Name="grid">
<AdornerDecorator>
<TextBox Height="23" HorizontalAlignment="Left" Name="textBox1" Width="120" />
</AdornerDecorator>
</Grid>WPF Snoop实用程序指出textBox1是AdornerDecorator的子级(如您所料),但AdornerDecorator创建的AdornerLayer也是子级。由于添加到AdornerLayer的自定义装饰器可以显示在文本框之外,因此AdornerLayer的绘图图面也必须延伸到外部(假设是整个窗口)。
那么,AdornerDecorator的放置有什么实际意义(假设我们将UI元素绑定到自定义装饰器,我们将其放置在AdornerLayer中)?我知道AdornerLayer.GetAdorner( textbox1 )将从textbox1获取视觉树中的第一个装饰器层,但它在哪里又有什么关系(因为自定义装饰器被添加到层中,并且自定义装饰器知道它绑定到哪个元素)?
发布于 2012-12-22 03:23:04
简短的答案是,当您开始处理与其他控件(在z索引平面中)重叠的控件时,这很重要,并且您关心特定的装饰层是否显示在重叠控件的顶部。例如,当你使用一个ErrorTemplate时,它的内容会呈现在一个装饰层中,如果你没有在你的应用程序中提供一个<AdornerDecorator> (这意味着你只使用了大多数窗口模板提供的那个),那么你最终可能会发生this。
https://stackoverflow.com/questions/9692457
复制相似问题