کنترل با امکان جابجایی توسط موس در WPF
برنامهنویسان بخصوص کسانی که میخواهند برنامههایی مشابه طراحی فرم( Form Builder) و یا ریپورت(Report Builder) در ویژوالاستودیو یا نرمافزارهای مشابه بنویسند لازم دارند که وقتی یک شی یا یک کنترل توسط کاربر به برنامه اضافه میشود، کاربر بتواند آن را با استفاده از موس حرکت دهد و مکان آن را با موس مشخص کند. این کار در محیط فرمبیس(FormBase) با بکارگیری ایونت(Event)های MouseDown، MouseUp و MouseMove برای هر کنترل امکانپذیر است. اما در حالت فرمبیس شیها و کنترلها همگی درون یک فرم یا یک پانل(Panel) قرار دارند و حرکت درون هردو (فرم یا پانل) با استفاده از تنظیم دو خاصیت(Property) لفت(Left) و تاپ(Top) برای آن کنترل یا شی امکانپذیر است. اما در WPF ما پانلهای مختلفی چون Canvas، Grid و ... داریم که تغییر مکان کنترلها در آنها روشهای متفاوتی دارند. مثلا در پانل Canvas برای تنظیم محل یک شی باید با استفاده از دستورهای SetLeft و SetTop و بکارگیری خاصیت وابسته(Attached Property) Left و Top محل شی را درون Canvas تغییر داد اما برای Grid لازم است خاصیت Margin را برای آن شی یا کنترل تغییردهیم. در اینجا هدف آموزش نحوه تغییرمکان کنترل در Canvas میباشد.