自动调整主窗口调整大小的窗口
问题描述:
我有一个Window
定义如下:自动调整主窗口调整大小的窗口
<Window x:Class="AutomatedSQLMigration.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SizeToContent="Height"
DataContext="{Binding MainPageViewModel, Source={StaticResource Locator}}">
<DockPanel Name="MasterDockPanel">
...
</DockPanel>
</Window>
我有一些标签在标签中控制和窗口正确地调整大小的高度,以适应所选择的标签的内容作为只要用户不更改窗口大小。一旦用户手动更改窗口大小,该窗口将不会自动调整大小以适应所选选项卡的内容。
即使在用户手动更改大小之后,我还能做些什么来让窗口自动调整大小?
答
据我所知,你要求的行为外箱,这样我就可以看到这些解决方案:
设置最小高度为
Window
(这样<Window MinHeight="150" ...
),以便用户可以不更改高度小于指定的最小内容TabControl
。我认为这是最简单可靠的解决方案。使用这样的黑客:
XAML
<Window x:Class="AutoResizeProblem.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded"
SizeToContent="Height">
<DockPanel Name="MasterDockPanel" Background="Aquamarine">
<TabControl SelectionChanged="TabControl_SelectionChanged">
<TabItem Header="Test1">
<TextBlock Name="Test1Content" Background="Red" Height="100">TEST1</TextBlock>
</TabItem>
<TabItem Header="Test2">
<TextBlock>TEST2</TextBlock>
</TabItem>
<TabItem Header="Test3">
<TextBlock>TEST3</TextBlock>
</TabItem>
</TabControl>
</DockPanel>
</Window>
Code-behind
public partial class MainWindow : Window
{
double _initWindowHeight = 0;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
_initWindowHeight = this.Height;
}
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (_initWindowHeight > 0)
this.Height = _initWindowHeight;
}
}
在这种情况下,您保存Window
的初始高度在Loaded
事件。然后,当您更改制表符时(SelectionChanged
事件)被分配给Window
的保存值。
既然你是在说tab控件,为什么不把它们包含在显示的XAML中呢? – stakx 2014-10-09 15:44:00
题外话:作为一个用户,我很可能会变得非常恼火,因为在手动调整它的窗口大小之后,我立刻就开始注意窗口大小*本身。可以调整窗口大小,并让用户确定窗口大小;或使其不可调整大小,并让窗口选择。 – stakx 2014-10-09 15:46:49