2013-11-27 45 views
0

我的形状应用程序有问题。我想要一个可以使模式脱离XML的应用程序。 我的问题是父母的拖动选项。所以我可以有一个椭圆,其中有两个矩形。当我拖动父项时,它也必须拖动子项。WPF中的可拖动形状与childs

我如何设置它:

<contentcontrol> 
    <itemscontrol> 
     <ellipse>Parent</ellipse> 
    </itemscontrol> 
    <itemscontrol> 
     <rectangle>Child1</rectangle> 
    </itemscontrol> 
    <itemscontrol> 
     <rectangle>Child2</rectangle> 
    </itemscontrol> 
</contentcontrol> 

我认为这是不可能有在ContentControl中更多的对象。我的内容控件允许拖放,当它是这样的时候,它也被允许拖放它的孩子

但是,这个问题,定位不适合,当我只是把它绘制在帆布。所以随着项目控制我的整个想法与定位是拧。什么是解决这个问题的好选择?

有人可以帮忙吗?非常感谢!

回答

0

记住,ContentControl本身就是一个Control,使您可以嵌套它们:

在VS2013 C#编译

<ContentControl> 
    <ItemsControl> 
     <!-- One shape in the top level parent. --> 
     <Ellipse Width="100" Height="100" Stroke="#FFDE3737" /> 
     <ContentControl> 
      <ItemsControl> 
       <!-- Multiple shapes in one sub-parent --> 
       <Ellipse Width="100" Height="100" Stroke="#FFDE3737" /> 
       <Ellipse Width="100" Height="100" Stroke="#FFDE3737" /> 
      </ItemsControl> 
     </ContentControl> 
    </ItemsControl> 
</ContentControl> 

编辑:使用WPF组成工作时,一个有用的技巧就知道了。许多Controls派生自相同的基地Control。以这种方式,它们形成一种复合图案,允许您在必要时将它们嵌套得非常深。

+0

好吧,现在我已经有了一个Contentcontrol,它的内容为Itemscontrol。并且“父母”和所有“孩子”被添加到itemscontrol。但是,我怎样才能将孩子定位在父母之中呢?在我将所有形状添加到内容控件之前,但所有内容都是可拖放的。但我只希望我的父母被拖拽,然后孩子们就会随之移动。所以这就是为什么我使用1个contentcontrol(可以拖动)以及其中的所有形状的itemscontrol。 – Haidy

+0

“OnClick”或“OnDragDrop”事件从最多嵌套的组件向上冒泡。您用于拖放顶级“ContentControl”的方法可以应用于子级。以这种方式,子类ContentControl将具有独立于任何父ContentControl的拖放能力。 –

+0

但是在你的解决方案中,2个椭圆不能以画布的方式定位?所以它不会帮助我这样做。我希望我的所有形状都位于画布上,这些组必须位于某个面板内的内容控件中。但它不会把定位搞砸。 – Haidy