我创建了一个无边框窗口模板,以便所有窗口看起来都一样。模板代码如下所示:
public abstract class WindowBase : Window
{
static WindowBase()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(WindowBase), new FrameworkPropertyMetadata(typeof(WindowBase)));
}
}
我的风格看起来像这样:
<Style TargetType="{x:Type WindowBase}">
<!--<Setter Property="Topmost" Value="True" />-->
<Setter Property="WindowStyle" Value="None" />
<Setter Property="Background" Value="White"/>
<Setter Property="ResizeMode" Value="CanResizeWithGrip" />
<Setter Property="WindowState" Value="Maximized" />
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border Margin="0" BorderThickness="1">
<Grid>
<Grid Background="White" Visibility="Visible">
<Grid.RowDefinitions>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>
<ContentPresenter Grid.Row="0" Grid.RowSpan="2"/>
</Grid>
<ContentPresenter />
<ResizeGrip Name="ResizeGroup" VerticalAlignment="Bottom" HorizontalAlignment="Right" KeyboardNavigation.IsTabStop="False"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ResizeMode" Value="CanResizeWithGrip"/>
<Condition Property="WindowState" Value="Maximized"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="ResizeGroup" Value="Collapsed"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在当应用程序以最大化状态运行时,我观察到的是窗口超出了屏幕空间。假设我是1600 x 900,我的最大工作区域是1600 x 900,但应用程序采用这样的方式:1614 x 914.另外,使用WPF Inspector,我观察到的是Top和Left位置是负数。在我的案例中它显示为'-7'。
我不确定,我哪里错了?有人可以帮忙吗?
答案 0 :(得分:1)
将ResizeMode设置为NoResize
而不是CanResizeWithGrip
。这将删除调整大小边框,虽然不可见,但显然会考虑尺寸计算。
<Style TargetType="{x:Type WindowBase}">
...
<Setter Property="ResizeMode" Value="NoResize" />
...
</Style>
答案 1 :(得分:0)
尝试:
<ControlTemplate.Triggers>
<Trigger Property="IsActive" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource WindowBorderActive}" />
</Trigger>
<Trigger Property="WindowState" Value="Maximized">
<Setter TargetName="Maximize" Property="Visibility" Value="Collapsed" />
<Setter TargetName="Restore" Property="Visibility" Value="Visible" />
<Setter TargetName="LayoutRoot" Property="Margin" Value="7" />
</Trigger>
<Trigger Property="WindowState" Value="Normal">
<Setter TargetName="Maximize" Property="Visibility" Value="Visible" />
<Setter TargetName="Restore" Property="Visibility" Value="Collapsed" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ResizeMode" Value="CanResizeWithGrip" />
<Condition Property="WindowState" Value="Normal" />
</MultiTrigger.Conditions>
<Setter TargetName="ResizeGrip" Property="Visibility" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
保证金= 7将成功。 :)