我的窗口有WindowStyle="None"
和ResizeMode="CanResize"
,因此最大化它会覆盖任务栏。我有一个解决方法,在最大化之前将MaxWidth和MaxHeight设置为WorkArea尺寸,当任务栏关闭时它工作得很好,但当任务栏位于屏幕左侧时,仍然位于0,0位于其下方。
我想将最大化窗口的TopLeft偏移到WorkArea的TopLeft。 Window有margin属性,但似乎不起作用。
我试过以下,但似乎最大化的窗口无法移动/偏移。
private void mywindow_StateChanged(object sender, EventArgs e)
{
if (this.WindowState == WindowState.Maximized)
{
MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
double ScreenXOffset = System.Windows.SystemParameters.WorkArea.TopLeft.X;
mywindow.Left = ScreenXOffset;
mywindow.Margin = new Thickness(ScreenXOffset,0,0,0);
}
关于解决方法的想法?
答案 0 :(得分:0)
您可以将窗口的MaxHeight设置为MaximizedPrimaryScreenHeight
public MainWindow()
{
InitializeComponent();
this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
}
您可能还希望设置窗口的MaxWidth。
public MainWindow()
{
InitializeComponent();
this.MaxWidth= SystemParameters.MaximizedPrimaryScreenWidth;
this.MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
}
你也可以使用DynamicResource:
<Window
Width="{DynamicResource
{x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}"
Height="{DynamicResource
{x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}"
WindowStartupLocation="CenterScreen"
WindowStyle="SingleBorderWindow">
...
</Window>
有关左侧任务栏的问题,请参阅Maximizing borderless window by taking in account the user taskbar