我为我的应用程序Windows创建了一个自定义模板。它在App.xaml
中PING
在我的MainWindow.xaml中,我已经应用了这样的风格(并且它有效):<Application.Resources>
<ResourceDictionary>
<Style x:Key="XWindow" TargetType="{x:Type Window}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate >
<Border BorderThickness="3">
<Border.Effect>
<DropShadowEffect BlurRadius="5" Direction="270" RenderingBias="Quality" ShadowDepth="0.5" Opacity="0.8" Color="#FF00B9FF"/>
</Border.Effect>
<Grid Background="White">
<local:ControlButtons Height="38" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Border BorderBrush="#99007CF7" BorderThickness="1"/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>
因此样式应用于窗口。但是当我在窗口中放置一个控件时,我看不到它甚至选择它。这是在XAML代码中,但即使我调试它不在窗口上......任何人都有线索?
有截图: XAML Problem
当我添加一个简单的按钮时,通常应该这样做:XAML Norrmal
答案 0 :(得分:0)
正如@Clemens所指出,您忘记在ContentPresenter
添加ControlTemplate
。这是显示窗口的实际内容的地方。
您还应该记得将ContentPresenter
放在AdornedDecorator
:
<Style x:Key="XWindow" TargetType="{x:Type Window}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border BorderThickness="3">
<Border.Effect>
<DropShadowEffect BlurRadius="5" Direction="270" RenderingBias="Quality" ShadowDepth="0.5" Opacity="0.8" Color="#FF00B9FF"/>
</Border.Effect>
<Grid Background="White">
<local:ControlButtons Height="38" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<Border BorderBrush="#99007CF7" BorderThickness="1">
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
AdornedDecorator
指定AdornerLayer在可视树中的位置,如MSDN中所述:http://msdn.microsoft.com/en-us/library/system.windows.documents.adornerdecorator.aspx。例如,如果您打算在窗口中显示任何验证错误,则需要一个,因为验证错误会显示在装饰层上。
修改:您还应该设置TargetType
的{{1}}属性:
ControlTemplate