测量并安排一个WPF控件以使用可用空间
本文关键字:控件 WPF 一个 空间 测量 | 更新日期: 2023-09-27 18:26:23
我有一个窗口,它有一个菜单、顶部的工具栏和各种其他控件。然后,我有了自己的控件,该控件派生自ContentControl,我希望它使用掉所有剩余的空间。不幸的是,我不能把它留给自己的设备,因为该控件是一个Win32控件,有点。。。放在这个WPF控件中,我需要使用SetWindowPos。
目前我正在使用ArrangeOverride,获取MainWindow.Content控件并查看Height和Width。然后,我使用Size作为参数,并调用SetWindowPos函数。它是用C++/CLI编写的,代码如下:
Size WebView::ArrangeOverride(Size finalSize)
{
Application::Current->MainWindow->Measure(finalSize);
UIElement^ obj = dynamic_cast<UIElement^>(Application::Current->MainWindow->Content);
double objHei = obj->RenderSize.Height;
double objWid = obj->RenderSize.Width;
SetWindowPos(hWnd, NULL, objWid-finalSize.Width, objHei-finalSize.Height, finalSize.Width, finalSize.Height, NULL);
因此,在我的脑海中,我认为这会将控件的位置设置为剩余可用空间内。它确实起到了一定的作用,但似乎MainWindow.内容控制直到之后才被测量?我在这里做错了什么?
edit:大多数问题似乎都是在完全屏蔽窗口然后取消完全屏蔽时出现的。
我已经通过使用中这个问题的答案解决了这个问题
我只是简单地将控件放入一个Frame中,这样它就成为了父控件。
然后使用Point I将窗口位置设置为该位置,以及作为参数传递给ArrangeOverride方法的大小。