2013-11-27 3 views
0

У меня проблема с приложением формы. Я хочу приложение, которое может сделать схему из XML. Моя проблема - вариант перетаскивания для родителей. Таким образом, я могу иметь эллипс с двумя прямоугольниками в нем, например. Когда я перетаскиваю родителя, он также должен перетаскивать дочерние элементы.Перетаскиваемые фигуры в WPF с дочерними элементами

Как настроить:

<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> 

EDIT: полезный совет, чтобы знать при работе с композицией WPF. Многие Controls происходят из той же базы Control. Таким образом, они образуют своего рода составной узор, позволяющий вам глубоко вложить их в случае необходимости.

+0

Хорошо, теперь у меня есть Contentcontrol, который имеет содержимое Itemscontrol. И «parent» и все «childs» добавляются в itemcontrol. Но как я могу поместить дочерние элементы в родителя? До того, как все формы были добавлены в contentcontrol, но затем все будет перетаскиваться. Но я хочу, чтобы только мой родитель перетащил мышью, а потом дети переместились вместе с ним. Вот почему я использую 1 contentcontrol (который может перетаскивать) и itemcontrol в нем со всеми фигурами. – Haidy

+0

«OnClick» или «OnDragDrop» пузырь событий от самых вложенных компонентов вверх. Метод, который вы используете для перетаскивания верхнего уровня 'ContentControl', может быть применен к детям. Таким образом, дочерний элемент ContentControl будет иметь возможности перетаскивания, независимо от родительского ContentControl. –

+0

Но с вашим решением, 2 эллипса не могут быть расположены так, как полотно? Поэтому мне это не поможет. Я хочу, чтобы все мои фигуры располагались на холсте, группы должны находиться в контенте контента внутри какой-либо панели или что-то в этом роде. Но это не повредит позиционирование. – Haidy

Смежные вопросы