2010-01-04 9 views
5

Canvas에 여러 모양 (예 : EllipseRectangle)을 넣었습니다. 이제 사용자가 &을 끌어다 놓을 수 있기를 바랍니다. 사용할 수있는 미리 정의 된 기능이 있습니까? 아니면 마우스 이벤트를 사용하여 드래그 & 자신을 드롭해야합니까?캔버스에 끌어서 놓기 모양

감사합니다.

답변

-1

마우스 이벤트와 시각적 트리를 사용하여 직접해야한다고 생각합니다. 여기 도움이 될 것이라고 믿는 기사 - link text입니다. 그렇지 않다면 오늘 저녁에 나중에 샘플 코드를 게시 할 수 있습니다.

HTH

5

마우스 이벤트 처리 및 드래그를 구현 앤 드롭 자신을 것이다 확실히 작동하지만 당신은 당신이 Expression Blend를 동작을 활용할 수 있습니다 무엇을하려고에 따라 달라집니다. Microsoft.Expression.Interactions DLL에는 Silverlight 및 WPF에서 사용되는 유용한 기본 동작, 트리거 및 동작이 포함되어 있습니다.

요소에 기본 드래그 앤 드롭 기능을 구현하는 MouseDragElementBehavior가 있습니다. 이는 레이아웃 컨테이너에 관계없이 작동하므로 (Canvas에 제한되지 않도록) 당신이 좋아하면 직접 XAML에서 혼합을 사용하여 요소에이 동작을 떨어 뜨리거나 그것을 정의 할 수 있습니다 :

<Rectangle Fill="Red" Stroke="Black" HorizontalAlignment="Left" Width="100" Height="100"> 
    <i:Interaction.Behaviors> 
     <il:MouseDragElementBehavior/> 
    </i:Interaction.Behaviors> 
</Rectangle> 

프로젝트 System.Windows.Interactivity.dll 및 Microsoft.Expression.Interactions 모두를 참조해야합니다. dll이 동작을 사용합니다.

편집 (C# 코드 숨김에서이 ​​문제를 부착 보여) :

Rectangle rect = new Rectangle(); 
rect.Fill = new SolidColorBrush(Colors.Red); 
rect.Width = 100; 
rect.Height = 100; 

MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior(); 
dragBehavior.Attach(rect); 

것은 당신의 using 문을 가진 Microsoft.Expression.Interactivity.Layout 네임 스페이스를 포함해야합니다.

+0

안녕하세요, Expression Blend에 익숙하지 않지만 재미있을 것 같습니다. 사용자가 기하학적 문제 (원, 삼각형, 이등분기 등)를 그릴 수있게 해주는 프로그램을 만들고 있습니다. Shapes가 사용자에 의해 동적으로 생성 되었기 때문에 XAML 대신 C#으로 MouseDragElementBehavior를 설정해야한다고 생각하십니까? C# 샘플 코드를 제공해 주시겠습니까? System.Windows.Interactivity.dll 및 Microsoft.Expression.Interactions.dll을 어떻게 참조해야합니까? 감사합니다. –

+0

Expression Blend 3이 설치되어 있지 않은 경우 DLL을 참조 할 수 있도록 SDK를 다운로드하고 설치해야합니다 (무료). 다음 사이트에서 다운로드 할 수 있습니다. http://www.microsoft.com/downloads/details.aspx?FamilyID=F1AE9A30-4928-411D-970B-E682AB179E17&displaylang=en 행동에 대한 좋은 점 중 하나는 일부를 캡슐화 할 수 있다는 것입니다. UI 비헤이비어 코드를 만든 다음 XAML의 요소에 선언적으로 첨부합니다. 그러나 코드 숨김에서도 동작을 인스턴스화하고 첨부 할 수 있으므로 C#에서 예제를 포함하도록 위의 내용을 편집합니다. –

+0

재미있는 소리 ... "Microsoft Expression Blend 3 SDK"를 다운로드했지만 설치를 시작했을 때 다음 메시지가 나타납니다. "Microsoft Expression Blend 3 SDK를 설치하기 전에 .Net 버전 3.5 또는 최신 런타임 구성 요소를 설치해야합니다. 문제를 해결 한 후 다시 설치하십시오. ". 그러나 "Microsoft .Net Framework 3.5"가 내 컴퓨터에 설치되어 있습니다. 이것으로 충분하지 않습니까? –