2013-11-27 2 views
0

내 셰이프 응용 프로그램에 문제가 있습니다. 나는 XML 스키마를 만들 수있는 애플 리케이션을 원한다. 내 문제는 부모를위한 드래그 옵션입니다. 그래서 저는 예를 들어 두 개의 직사각형이있는 타원을 가질 수 있습니다. 부모를 드래그하면 자식을 드래그해야합니다. WPF에서 자식이있는 드래그 가능한 모양

나는 그것을 설정하는 방법 :

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

나는 그것이 ContentControl을 더 객체를 가질 수 없다 생각합니다. 내 contentcontrol은 드래그 앤 드롭이 허용되며, 이와 같은 경우 드래그 앤드로도 허용됩니다.

그러나이 문제는 위치 정보를 그릴 때 적합하지 않습니다. 캔버스. 그래서 itemscontrol과 함께 포지셔닝과 나의 전체 아이디어는 엉망입니다. 이 문제에 대한 해결책의 좋은 대안은 무엇입니까?

누군가 도울 수 있습니까? 고마워요!

답변

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

좋아, 이제는 Itemscontrol과 같은 내용을 가진 Contentcontrol을 사용하게되었습니다. 그리고 "parent"와 모든 "childs"가 itemscontrol에 추가됩니다. 그러나 어떻게 부모 내에서 어린이를 배치 할 수 있습니까? ContentControl에 모든 셰이프를 추가하기 전에 모든 것이 드래그 앤 드롭 가능합니다. 하지만 부모님 만 드래그/드롭을 한 다음에 아이를 따라 움직일 수 있기를 바랍니다. 그래서 저는 1 개의 contentcontrol (끌 수 있습니다)과 itemscontrol을 모든 모양으로 사용합니다. – Haidy

+0

'OnClick'또는 'OnDragDrop' 이벤트는 가장 중첩 된 구성 요소에서 위쪽으로 거품을냅니다. 최상위 'ContentControl'을 끌어서 놓기 위해 드래그하는 메서드는 자식에 적용될 수 있습니다. 그런 식으로, 자식'ContentControl'은 임의의 부모'ContentControl'와는 독립적 인 드래그 드롭 능력을 갖게됩니다. –

+0

그러나 솔루션을 사용하면 2 줄임표를 캔버스의 위치에 배치 할 수 없습니까? 그래서 그걸 좋아하지 않을거야. 캔버스에 모든 모양을 배치하고 싶다면 그룹은 일부 패널 내에서나 또는 콘텐트 컨트롤에 있어야합니다. 그러나 그것은 포지셔닝을 망치지 않을 것입니다. – Haidy