Я просматривал класс WindowChrome
в библиотеке System.Windows.Shell
(v 3.5.41019.1). Когда я пытаюсь создать шаблон Window
, маржа элемента Border
в шаблоне, похоже, не имеет эффекта:
<Window x:Class="WpfApplication7.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Microsoft.Windows.Shell"
Title="MainWindow" Height="350" Width="525" Style="{DynamicResource WindowStyle1}">
<Window.Resources>
<Style x:Key="WindowStyle1" TargetType="{x:Type Window}">
<!-- Here is the WindowChrome.-->
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<!-- And here is the Border. Its margin has no effect as far as I can tell.-->
<Border Margin="25" Background="Red">
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
</Grid>
</Window>
Как вы думаете, в чем причина? Мне интересно, потому что я видел, что некоторые люди используют что-то вроде *:
<Border x:Name="WindowBorder" Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}" Background="Red">
Но поскольку это не влияет на мои тесты, что может быть для этого?
(*) Одним из мест, где он используется, является проект ModernUI на CodePlex.суб >
Изменить: Я тестировал это на Windows 7 с Aero on.
Изменить 2:. Все равно, что Aero выключен.