1

我正在尝试实现在运行时制作的布局。

布局将分为2、3、4、...

例如,有一个带有 1 个图像的大盒子。

如果我拖放图像,它将被分成两部分。

喜欢A => A | B or B | A

如果我拖放另一个图像,它将是

            A |          | B
A | B =>    --| B  or  A | --
            C |          | C

简单的提示会很棒。

4

4 回答 4

1

这个想法到目前为止很简单。让我们说清楚。首先,根堆栈面板假设它是 A,将Orientation="Horizontal"如下所示:

StackPanel A = new StackPanel();
A.Width = 300;
A.Height = 200;
A.Background = new SolidColorBrush(Colors.LightBlue);
A.Orientation = Orientation.Horizontal;

现在一旦我们有了 A,我们就知道它是根,每当我们向它添加一些东西时,它就会把它放在右边,这当然是你想要的 A | B 或更多 A | 乙| C. 现在,当您拖放图像检查时 -

图像的坐标来检测它悬停在哪个父布局上,然后检查它是否是一个 StackPanel( if(theLayout is StackPanel))

现在检查堆栈面板的方向。[PseudoCode]-

if(Horizontal)
{
     //Create a stackpanel with Vertical Orientation and place the image inside it
     //stackpanel_with_v_orientation.Children.Add(yourImage)
     //then add this stackpanel to theLayout like theLayout.Children.Add(stackpanel_with_v_orientation);
}
else
{
    //its over some sub panels,which are ofcourse with vertical 
    //orientation.just add this up.
}

像这样!让我知道这是否有意义。

于 2013-09-10T08:54:36.263 回答
0

最后你想要一个这样的停靠控件:http: //avalondock.codeplex.com/

于 2013-09-10T09:10:04.730 回答
0

您可以使用 DockPanel 或 WrapPanel。如果这还不够,您可以实现自己的Panel逻辑,指定项目的排列方式。无论如何看看这个链接

于 2013-09-10T08:55:07.720 回答
-1

哇,你当然喜欢挑战!为此,您将需要创建一个相当复杂的自定义Panel实现。在此Panel,您将可以访问其中的子项(项目),Panel因此您应该能够通过一些仔细的思考来实现您的要求。我可以为您提供一些有关该主题的教程的链接,但在那之后,您几乎可以靠自己了。

请查看这些链接中的文章以获得帮助:

如何在 WPF 中创建自定义布局面板

在 WPF 中创建自定义面板

于 2013-09-10T08:52:38.830 回答