有些像这样的xaml:
<Grid Name="grid">
<AdornerDecorator>
<TextBox Height="23" HorizontalAlignment="Left" Name="textBox1" Width="120" />
</AdornerDecorator>
</Grid>
Run Code Online (Sandbox Code Playgroud)
WPF Snoop实用程序指示textBox1是AdornerDecorator的子项(正如您所期望的那样),但AdornerDecorator创建的AdornerLayer也是子项.由于添加到AdornerLayer的自定义装饰器可以显示在文本框的"外部",因此AdornerLayer的绘图表面也必须伸展到外面(大概是整个窗口).
那么,AdornerDecorator的位置具有什么真正的意义(假设我们将UI元素绑定到我们放置在AdornerLayer中的自定义装饰器)?我知道AdornerLayer.GetAdorner(textBox1)将从textbox1获取可视树中的第一个装饰层,但是它在哪里(因为自定义ardorner被添加到图层而自定义ardoner知道它绑定了哪个元素)至)?
Jas*_*ank 26
简短的回答是,当您开始处理与其他控件重叠的控件(在z-index平面中)并且您关心特定的装饰层是否显示在重叠控件之上时,这很重要.例如,当您使用ErrorTemplate,其内容得到呈现在装饰器层,如果你不提供一个<AdornerDecorator>在你的应用程序(这意味着你只需要使用大多数窗口模板提供的一个),那么你就可以结束了这发生.
通过放置<AdornerDecorator>我们想要的位置,我们可以控制这种重叠的行为方式.
| 归档时间: |
|
| 查看次数: |
11983 次 |
| 最近记录: |