windowState和SizeToContent不能同时工作

时间:2014-08-31 11:07:14

标签: c# wpf

我正在尝试使用SizeToContent =" WidthAndHeight"和WindowState ="最大化"同时。我试图在加载期间以及MainWindow的构造函数中更改窗口的状态,但没有运气。

<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的宽度以使选项卡位于同一行时,它们会超出MainWindow的边界。如果我设置Mainwindow的宽度,那么MainWindow将具有恒定的宽度。这意味着如果监视器的大小变小,那么MainWindow中比屏幕大的部分将不会显示。我希望我能说清楚。

1 个答案:

答案 0 :(得分:0)

感谢尤金,我明白了。我已经尝试在运行时更改MainWindow的状态,但它没有成功(MainWindow没有占据整个屏幕)。

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

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

这不是最优雅的做法,但它现在可以达到目的。但是,如果有人能提出更优雅的解决方案,我们将不胜感激。