windowState和SizeToContent不能同时工作

本文关键字:工作 不能 SizeToContent windowState | 更新日期: 2023-09-27 18:20:04

我正在尝试同时使SizeToContent="WidthAndHeight"和WindowState="Maximized"。我试图在加载期间以及在主窗口的构造函数中更改窗口的状态,但没有成功。

<Window x:Name="MainWindowMy" x:Class="ManyTabControls.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Title="Pressure Vessel Design"  WindowState="Maximized" SizeToContent="WidthAndHeight" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" Loaded="MainWindowMy_Loaded"  >
<Window.Resources>

我有一个带有很多选项卡的TabControl,在设计查看器中,选项卡向下流动到不同的行中。当我更改TabControl的宽度,使选项卡在同一行时,它们就会超出主窗口的边界。如果我设置主窗口的宽度,那么主窗口将具有恒定的宽度。这意味着,如果监视器的大小变小,那么主窗口中比屏幕大的部分将不会显示。我希望我说清楚了。

windowState和SizeToContent不能同时工作

谢谢Eugene,我有这个主意。我已经尝试在运行时更改MainWindow的状态,但没有成功(MainWindow没有占据全屏)。

正如Eugene所提到的,原因是这些属性相互冲突(SizeToContent获得优先级),所以我必须关闭其中一个才能打开另一个。因此,要解决这个问题:

private void MainWindowMy_Loaded(object sender, RoutedEventArgs e)
{
    this.SizeToContent = System.Windows.SizeToContent.Manual;
    this.WindowState = System.Windows.WindowState.Maximized;
}

这不是最优雅的方式,但它目前符合目的。然而,如果有人能想出一个更优雅的解决方案,我们将不胜感激。