使用AdornerDecorator装饰器实现WPF水印 水印装饰器WatermarkAdorner类代码: using System; using System.Collections.Generic -- ControlTemplate不包含AdornerDecorator,需要在ControlTemplate中添加AdornerDecorator --> <AdornerDecorator > <ContentPresenter /> </AdornerDecorator> </ControlTemplate> StaticResource tmplBtn}"></Button> </Grid> </Window> 注意:如果窗体或控件使用了ControlTemplate,因为ControlTemplate不包含AdornerDecorator ,所以需要在ControlTemplate中添加AdornerDecorator。
</Grid> <AdornerDecorator Grid.Row="1" KeyboardNavigation.IsTabStop="False"> <ContentPresenter MainContentPresenter" KeyboardNavigation.TabNavigation="Cycle" /> </AdornerDecorator AdornerDecorator 为可视化树中的子元素提供 AdornerLayer,如果没有它的话一些装饰效果不能显示(例如下图Button控件的Focus效果),Window的 ContentPresenter 外面套个 AdornerDecorator 是 必不能忘的。
SystemParameters.SmallIconWidth)}" Height="{Binding Path=(SystemParameters.SmallIconHeight)}" /> <AdornerDecorator > <ContentPresenter Name="PART_RootContentPresenter" /> </AdornerDecorator
TemplateBinding Background}" Grid.Row="1" Grid.ColumnSpan="2" Margin="5,5,5,5"> <AdornerDecorator > <ContentPresenter/> </AdornerDecorator>
Window}"> <Border> <Grid> <AdornerDecorator > <ContentPresenter /> </AdornerDecorator </Style> </Window.Style> 按上一篇文章介绍的方法打开一个使用WindowChrome的Window(大小为800 * 600),在VisualStudio的实时可视化树可以看到AdornerDecorator
at System.Windows.Controls.Decorator.MeasureOverride(Size constraint) at System.Windows.Documents.AdornerDecorator.MeasureOverride
"450" Width="800"> <Window.Template> <ControlTemplate TargetType="Window"> <AdornerDecorator > <ContentPresenter /> </AdornerDecorator> </ControlTemplate>
</StackPanel> </Grid> <AdornerDecorator > <ContentPresenter /> </AdornerDecorator