5

是否可以以某种方式限制Window.SizeToContent仅扩大尺寸?

我有一个在TabControl中动态填充内容的通用窗口。由于一开始并不知道每个 TabItem 会有多大,因此我无法预先计算所需的大小(尽管我只关心高度)以在不滚动的情况下全部显示。

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

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

4

3 回答 3

3

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

public void WindowLoaded()
{
    this.MinHeight = this.ActualHeight;
    this.MinWidth = this.ActualWidth;
}
于 2013-03-05T14:09:19.927 回答
3

我尝试了 Bobs 的方法。他的回答是正确的方法。

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

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

于 2013-09-12T08:38:23.910 回答
0

在我的情况下,我使用了 BindingActualWidthActualHeighttoMinWidthMinHeight在窗口中:

    x:Name="printWnd"
    SizeToContent="WidthAndHeight"
    MinWidth="{Binding ActualWidth, ElementName=printWnd}"
    MinHeight="{Binding ActualHeight, ElementName=printWnd}"
于 2019-10-01T13:23:58.173 回答