دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۹
  • اسفند

جلسه ۰۷ : بررسی Routed Events در WPF

  • دسته‌بندی‌ها :
جلسه ۰۷ : بررسی Routed Events در WPF
    • جزئیات
    • نوع محتواآموزشی

      دوستان و علاقمندان به مباحث WPF وقتتون بخیر. با آموزش WPF از وب سایت آموزشی پی وی لرن همراهتون هستیم. با بررسی Routed Events در WPF این بخش از آموزش را نیز ادامه خواهیم داد. در ابتدا انواع Routed Event را بیان نموده و Routed Event سفارشی ایجاد می کنیم. در آخر نیز کدهایی برای کامپایل و اجرا داریم. با ادامه ی آموزش ها ، همراه ما باشید.

      بررسی Routed Events در WPF

      یک Routed Events نوعی رویداد است که می تواند در یک درخت عنصر به جای این که فقط شیء رویداد را مطرح کند ، هندلرها را بر روی listener های چندگانه در یک درخت عنصر فراخوانی می کند. در واقع یک رویداد CLR است که توسط نمونه ای از کلاس Routed Event پشتیبانی می شود. با سیستم رویداد WPF ثبت شده است. RoutedEvents سه استراتژی اصلی روت دارد که به شرح زیر است.

      • Direct Event
      • Bubbling Event
      • Tunnel Event

      Direct Event

      یک Direct Event شبیه به وقایع در Windows form ها است که توسط عنصری که در آن رویداد ایجاد می شود مطرح می شود.

      بر خلاف یک رویداد استاندارد CLR ، رویدادهای direct routed از مدیریت کلاس پشتیبانی می کنند و می توان از آن ها در Event Setters و Event Triggers در Custom Control خود استفاده کرد.

      مثال خوبی از یک Direct Event می تواند رویداد MouseEnter باشد.

      Bubbling Event

      یک Bubbling Event با عنصری که در آن رویداد آغاز می شود آغاز می شود. سپس از درخت بصری به بالاترین عنصر درخت بصری می رود. بنابراین ، در WPF ، بالاترین عنصر به احتمال زیاد یک پنجره است.

      Tunnel Event

      هندلرهای رویداد روی ریشه درخت عنصر فراخوانی می شوند و سپس این رویداد به پایین درخت بصری به گره های کودکان می پردازد تا این که به عنصری که از آن رویداد سرچشمه گرفته است برسد.

      تفاوت بین رویداد bubbling و tunneling در این است که یک رویداد tunneling همیشه با پیش نمایش (preview) آغاز می شود.

      در یک برنامه WPF ، رویدادها اغلب به صورت tunneling/bubbling اجرا می شوند. بنابراین ، یک پیش نمایش MouseDown و سپس یک رویداد MouseDown خواهید داشت.

      در زیر مثال ساده ای از یک رویداد Routed آورده شده است که در آن یک دکمه و سه بلوک متنی با برخی خصوصیات و وقایع ایجاد شده است.

      مثال : 

      در این جا کد #C برای اجرای رویدادهای Click برای دکمه ، StackPanel و Window آورده شده است.

      مثال : 

      وقتی کد بالا را کامپایل و اجرا می کنید ، پنجره زیر را ایجاد می کند.

       

      بررسی Routed Events در WPF - مثالی برای یک رویداد Routed

      بررسی Routed Events در WPF – مثالی برای یک رویداد Routed

      هنگامی که بر روی دکمه کلیک می کنید ، مطابق شکل زیر بلوک های متن به روز می شوند.

       

      بررسی Routed Events در WPF - مثالی برای یک رویداد Routed

      بررسی Routed Events در WPF – مثالی برای یک رویداد Routed

      اگر می خواهید routed event را در هر سطح خاصی متوقف کنید ، باید e.Handled = true را تنظیم کنید.

      بیایید رویداد StackPanel_Click را مطابق شکل زیر تغییر دهیم.

      مثال : 

      با کلیک بر روی دکمه ، مشاهده می کنید که رویداد کلیک به پنجره هدایت نمی شود و در stackpanel متوقف می شود و بلوک متن ۳ به روز نمی شود.

       

      بررسی Routed Events در WPF - مثالی برای یک رویداد Routed

      بررسی Routed Events در WPF – مثالی برای یک رویداد Routed

       Routed Event های سفارشی

      در چارچوب NET. ، رویداد Routed سفارشی نیز می تواند تعریف شود. برای تعریف یک routed event سفارشی در #C باید مراحل زیر را دنبال کنید.

      • routed event خود را با فراخوانی سیستم RegisterRoutedEvent اعلام و ثبت کنید.
      • Routing Strategy ، یعنی Bubble, Tunnel و یا Direct را مشخص کنید.
      • هندلر رویداد را تهیه کنید.

      بیایید مثالی بزنیم تا درباره routed event های سفارشی مسیریابی بیش تر بدانیم. مراحل زیر را دنبال کنید.

      • با WPFCustomRoutedEvent یک پروژه WPF جدید ایجاد کنید.
      • بر روی solution خود کلیک راست کرده و Add > New item را بزنید.

      کادر گفتگوی زیر باز خواهد شد ، اکنون (Custom Control (WPF را انتخاب کرده و نام آن را MyCustomControl بگذارید.

       

       Routed Event های سفارشی - بررسی Routed Events در WPF

      Routed Event های سفارشی – بررسی Routed Events در WPF

      بر روی دکمه Add کلیک کنید و خواهید دید که دو فایل جدید (Themes/Generic.xaml و MyCustomControl.cs) در solution شما اضافه خواهند شد.

      کد XAML زیر سبک کنترل سفارشی را در فایل Generic.xaml تعیین می کند.

      مثال : 

      در زیر کد #C برای کلاس MyCustomControl آورده شده است که از کلاس Control به دست می آید که در آن یک routed event Click برای کنترل سفارشی ایجاد می شود.

      مثال : 

      در این جا اجرای routed event سفارشی در #C است که وقتی کاربر روی آن کلیک کند ، یک جعبه پیام نمایش داده می شود.

      مثال : 

      در این جا پیاده سازی در MainWindow.xaml برای اضافه کردن کنترل سفارشی با یک routed event Click وجود دارد.

      مثال : 

      وقتی کد فوق کامپایل و اجرا می شود، پنجره ی زیر زا تولید می کند که شامل یک کنترل سفارشی است.

       

       Routed Event های سفارشی - بررسی Routed Events در WPF

      Routed Event های سفارشی – بررسی Routed Events در WPF

      هنگامی که شما بر روی کنترل سفارشی کلیک کنید ، پیام زیر را تولید می کند.

       

       Routed Event های سفارشی - بررسی Routed Events در WPF

      Routed Event های سفارشی – بررسی Routed Events در WPF

      کلام پایانی

      دوستان عزیز متشکریم از این که تا این بخش از آموزش همراه بودید. در این بخش از آموزش WPF ، انواع Routed Event را نام بردیم و Routed Event های سفارشی را نیز ایجاد نمودیم. در ادامه برای درک بهتر ، مثال هایی نیز زده شد. امیدوارم این بخش از آموزش نیز مورد توجه قرار گرفته باشد. در بخش بعد به بررسی کنترل ها (Control ها) خواهیم پرداخت. با ادامه ی آموزش و وب سایت آموزشی پی وی لرن همراه باشید.

      QR:  جلسه ۰۷ : بررسی Routed Events در WPF
      به اشتراک بگذارید