*.xaml 은 다음처럼 구성한다..
*.xaml.cs 는 다음처럼구성한다.
*.xaml.cs 는 다음처럼구성한다.
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace ActionHandler02 { public partial class Page : UserControl { private bool isMouseDown = false; private Point lastPoint = new Point(); private Point offset = new Point(); public Page() { InitializeComponent(); this.myTextBlock.MouseLeftButtonUp += new MouseButtonEventHandler(MyTextBlock_MouseLeftButtonUp); this.myTextBlock.MouseLeftButtonDown += new MouseButtonEventHandler(MyTextBlock_MouseLeftButtonDown); this.myTextBlock.MouseMove += new MouseEventHandler(myTextBlock_MouseMove); } void myTextBlock_MouseMove(object sender, MouseEventArgs e) { if (this.isMouseDown) { //마지막 좌표 this.lastPoint = e.GetPosition(null); //텍스트블럭의 위치지정 this.myTextBlock.SetValue(Canvas.LeftProperty, (this.lastPoint.X - this.offset.X)); this.myTextBlock.SetValue(Canvas.TopProperty, (this.lastPoint.Y - this.offset.Y)); } } void MyTextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //mouse캡춰를 System.Windows.UIElement 로 설정 this.myTextBlock.CaptureMouse(); this.isMouseDown = true; //실버라이트 플러그인에서 위치 파악 this.lastPoint = e.GetPosition(null); this.offset.X = this.lastPoint.X - Convert.ToDouble(this.myTextBlock.GetValue(Canvas.LeftProperty)); this.offset.Y = this.lastPoint.Y - Convert.ToDouble(this.myTextBlock.GetValue(Canvas.TopProperty)); } void MyTextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //mouse캡춰를 System.Windows.UIElement 해제 this.myTextBlock.ReleaseMouseCapture(); this.isMouseDown = false; } } }