Я устанавливаю peroperty Поле и Дополняю окна, и оно не вступает в силу:
Вот пример:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SizeToContent="WidthAndHeight"
ResizeMode="NoResize"
Padding="22"
Margin="22">
<Grid>
<Label
FontWeight="Bold"
FontSize="36"
BorderThickness="1"
BorderBrush="Red"
Content="Hello world!"/>
</Grid>
</Window>
Результат:
Желаемый результат состоит в том, что красный кадр маркировки должен находиться далеко 44 пкс от кадра окна (margin+padding).
Да, я знаю, что могу установить поле маркировки, но это не то, что я хочу. У меня есть целый проект, что все его окна установлены на стиль, я хочу установить это свойства (или другой) в общем стиле окна.
Я предполагаю, не найду ли я решения, я создам названный стиль для жадности, где я установлю поле/дополнение, затем я пойду Окно окном и установлю стиль Сетки, но это - последняя опция, которую я хочу сделать.
Заранее спасибо.
Неудивительно, что Margin не работает, потому что Margin - это количество места, которое нужно разместить вокруг элемента управления. Для Window это означало бы уменьшение размера фрейма (и смещения), а не клиентской области, и это было бы немного странно (и может не очень хорошо работать со средой размещения Win32, не уверен). немного удивляет, что Padding не работает, и я не уверен, почему это могло быть.
Однако есть обходной путь, который можно инкапсулировать в стиль: заменить стандартный Window ControlTemplate на свой собственный шаблон, который учитывает Padding:
<ControlTemplate TargetType="Window">
<Border Background="White" Padding="{TemplateBinding Padding}">
<ContentPresenter />
</Border>
</ControlTemplate>
(Вы, вероятно, захотите, чтобы Border Background был кистью фона динамического окна для производственного кода, но вы поняли идею.)
Очевидно, вы можете поместить этот шаблон в средство установки шаблона стиля, чтобы избежать повторения его в каждом окне.
Вот полный шаблон (сгенерированный с помощью Microsoft Expression):
<Style x:Key="WindowStyle" TargetType="{x:Type Window}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Margin="{TemplateBinding Margin}"
Padding="{TemplateBinding Padding}">
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="ResizeMode" Value="CanResizeWithGrip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
<ResizeGrip
x:Name="WindowResizeGrip"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
IsTabStop="false"
Visibility="Collapsed"
/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
Property="ResizeMode"
Value="CanResizeWithGrip"
/>
<Condition
Property="WindowState"
Value="Normal"
/>
</MultiTrigger.Conditions>
<Setter
Property="Visibility"
TargetName="WindowResizeGrip"
Value="Visible"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>