2014-08-31 46 views
0

我想同时有SizeToContent =“WidthAndHeight”和WindowState =“Maximized”。我试图在加载过程中以及在MainWindow的构造函数中更改窗口的状态,但没有运气。windowState和SizeToContent不能同时工作

<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部分将不会显示。我希望我明确自己。

+4

您如何期待'Maximised'和'SizeToContent'一起工作?他们是矛盾的。你期望发生什么? – dkozl 2014-08-31 11:29:29

+0

然后会发生什么? “没有运气”不是一个好问题陈述。 – 2014-08-31 11:45:05

+0

当窗口加载时,它不会最大化。为什么它不能具有内容的大小并在加载时获得最大化。正如你可以看到这两个属性是共存的!一个人如何能够优先于另一个呢? – Bopy 2014-08-31 11:49:49

回答

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; 
} 

它没有这样做的最优雅的方式,但它服务的宗旨,为现在。但是,如果有人能够想出更优雅的解决方案,将不胜感激。

相关问题