如何强制我的窗口重新调整大小?

时间:2016-05-11 19:29:40

标签: c# wpf

我在WPF中有一个自动调整大小的应用程序用户控件(高度=“自动”宽度=“自动”)。当其中的一堆元素被调整大小时,窗口保持相同的渲染大小。如何强制它调整大小?我在调整窗口内组件大小的函数中尝试了这一行Application.Current.MainWindow.SizeToContent = SizeToContent.WidthAndHeight;。编译器给出了一个错误,即没有与此调用关联的对象。我试过这行MainWindowBorder.Height = Double.NaN;来欺骗它来调整大小。也没有运气。

3 个答案:

答案 0 :(得分:1)

在XAML中使用SizeToContent

for (auto& s : Plist)
    cout << s->getarea() << " should be equal to " << getarea(*s) << '\n';

https://msdn.microsoft.com/en-us/library/system.windows.window.sizetocontent%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

答案 1 :(得分:1)

如果可以调整所有内部控件的大小,但调整大小的唯一一件事就是Window,这个简单的方法怎么样?希望这会有所帮助..

int mycurrentscreenwidth = 1366;
int mycurrentwindowwidth = 1366;

var screen = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
var screenwidth = screen.Width;

if (Convert.ToInt32(screenwidth) < 1366)
{   
    double calculate_scalefactor= Convert.ToInt32(screenwidth) / (double)mycurrentscreenwidth;
    double newwidth_tobescaled = mycurrentwindowwidth * calculate_scalefactor;

    this.Width = newwidth_tobescaled;
}

答案 2 :(得分:0)

要获取当前用户控件的窗口,请参阅:

Access parent window from User Control

然后使用:

Window yourParentWindow = Window.GetWindow(userControl);
yourParentWindow.SizeToContent = SizeToContent.WidthAndHeight;