C# 加载窗口后SizeToContent不工作

C# 加载窗口后SizeToContent不工作,c#,wpf,C#,Wpf,这可能是一个愚蠢的问题,我可能遗漏了一些简单的问题,但以下是细节: 我只想在某些条件下调整窗口的大小。当窗口已经呈现时,SizeToContent似乎不起作用。我尝试过使布局无效和更新布局,但两者都不起作用 相关代码: public void Initialize(...) { this.Loaded += new RoutedEventHandler(OnLoaded); } void OnLoaded(object sender, RoutedEventArgs e) {

这可能是一个愚蠢的问题,我可能遗漏了一些简单的问题,但以下是细节:

我只想在某些条件下调整窗口的大小。当窗口已经呈现时,SizeToContent似乎不起作用。我尝试过使布局无效和更新布局,但两者都不起作用

相关代码:

public void Initialize(...)
{
    this.Loaded += new RoutedEventHandler(OnLoaded);
}

void OnLoaded(object sender, RoutedEventArgs e)
{
    Loaded -= new RoutedEventHandler(OnLoaded);
    Window win = Infragistics.Windows.Utilities.GetAncestorFromType(this, typeof(Window), true) as Window;

    if (win != null)
    {
        if (condition) // this is my condition ("just checks a property")
        {
            win.Topmost = true;
            win.SizeToContent = SizeToContent.WidthAndHeight;
            win.ResizeMode = ResizeMode.NoResize;
        }
    }
}

所以我想我的问题是:如果你给一个窗口一个预定义的大小(大的,例如600x400),一旦渲染,你想使用SizeToContent使窗口适应内容(小得多,可能像100x50),这可能吗?

SizeToContent属性在我的测试中起作用,在已加载事件触发期间和之后。也许窗口的可视树阻止了测量的内容大小向上传播到顶层窗口?您可能需要编辑您的问题,以包含一些描述可视化树的XAML。@感谢RogerN深入了解!不幸的是,这个控件在我看来是相当抽象的(因为它是业务应用程序的一部分),所以我实际上甚至不知道xaml是如何构造的。我想我对如何解决这个问题有一些想法,我想我可以在启动加载的事件之前设置所需的大小。我们有一些API支持这一点,也许这就是我要走的方向。再次感谢!