限制Window.SizeToContent仅扩展

时间:2013-03-05 14:04:54

标签: wpf window

是否有可能限制Window.SizeToContent仅扩大尺寸?

我有一个动态填充TabControl内容的常规窗口。由于一开始并不知道每个TabItem的大小,我无法预先计算所需的大小(我只关心高度),无需滚动即可显示所有大小。

每次更改标签时,启用SizeToContent都会自动将大小调整为所需的大小。虽然可以在当前视图需要更多空间时进行扩展,但我不喜欢在需要更少空间时窗口也会缩小。是否可以将SizeToContent行为限制为仅允许扩展窗口大小?或者可以以不同的方式模拟行为,同时考虑到选项卡控件旁边的窗口框架和其他组件仍能产生正确的结果?

我尝试连接到不同的窗口事件,以找出更改选项卡时新大小信息的位置,但窗口上唯一真正有用的信息OnChildDesiredSizeChanged,并未产生确定性结果(对于某些选项卡,它被称为,其他人则没有)。你还有其他想法吗?

3 个答案:

答案 0 :(得分:3)

您可以尝试使用FrameworkElement.MinHeightFrameworkElement.MinWidth设置Window加载后的最小高度/宽度。

public void WindowLoaded()
{
    this.MinHeight = this.ActualHeight;
    this.MinWidth = this.ActualWidth;
}

答案 1 :(得分:3)

我试过Bobs的方法。他的答案是正确的方法。

在我的情况下,WindowLoaded事件被提前触发。它在内容呈现之前被解雇。

因此我使用了“ContentRendered”事件,现在我的窗口不会缩小,如果内容大小减少。如果您的内容在首次显示窗口后可能会增加其大小,则可以使用“SizeChanged”事件。

答案 2 :(得分:0)

在我的情况下,我已将ActualWidthActualHeight绑定到窗口中的MinWidthMinHeight

    x:Name="printWnd"
    SizeToContent="WidthAndHeight"
    MinWidth="{Binding ActualWidth, ElementName=printWnd}"
    MinHeight="{Binding ActualHeight, ElementName=printWnd}"