我有一个窗口,其中包含菜单,顶部的工具栏以及其他各种控件。然后,我有自己的控件,它来自ContentControl,我想要用尽所有剩余的空间。不幸的是,我不能把它留给它自己的设备,因为控件是一个Win32控件,有点......放在这个WPF控件中,我需要使用SetWindowPos。
目前我正在做的是使用ArrangeOverride,获取MainWindow.Content控件并查看高度和宽度。然后我使用Size I作为参数进入并调用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.Content控件直到之后才被测量?我在这里做错了什么?
编辑:大多数问题似乎是在完全筛选窗口然后取消全屏幕时。
答案 0 :(得分:0)
我已设法通过使用此问题的答案here
来解决此问题我只是把我的控制权放到一个框架中,所以它就是父母。
然后使用Point I将窗口位置设置为该值,以及作为ArrangeOverride方法的参数传递的大小。