Makale Özeti

Bu yazımızda Route Event ları kontrol etmek için Event Manager sınfını nasıl kullanabileceğimizi inceliyoruz.

Makale

Windows Presentation Foundation (WPF) ile uygulama geliştirirken karşılaştığımız farklılıklara ne tür çözümler getirebileceğimizi incelemeye devam ediyoruz. Bu sefer inceleyeceğimiz konu WPF uygulamalarında kullanmış olduğumuz Routed Event ları incelemek olacaktır. Event kontrolü profesyonel projeleri yönetirken, süreçleri takip ederken ve uygulama geliştirirken oldukça gerekli bir işlemdir. Fakat bu işlemi hadi kontrol edelim diyince yapamıyoruz. Peki, nasıl yapabiliyoruz? İncelemeye çalışalım.

Projelerin kontrolü esnasında kullandığımız eventları takip etmek istediğimiz zamanlar olur. Bu durumda event manager sınıfnı kullanmak yeterli oluyordu. Ancak bu durumda WPF kullanırken biraz daha farklılaşıyor. EventManager sınıfında dönen kayıtların içerisinde dolaşıp EventManager 'in alt özelliklerinden RegisterClassHandler ile yakalanması gerekmektedir. Sonrasında bu event ları görebilir duruma geliyoruz.

Şimdi küçük bir örnek yardımı ile nasıl kontrol edebileceğimize göz atalım.

Visual Studio 2008 ya da 2010 üzerinde WPF projesi oluşturuyoruz. Sonrasında oluşturmuş olduğumuz projeye UserControl ekliyoruz. Sonrasında userControlLoaded olayını içine alacak şekilde aşağıdaki kod bloğunu ekliyoruz.

UserControl1.xaml.cs
using System;
using System.Windows;
using System.Windows.Controls;

namespace EventManager_
{
    /// <summary>
    /// Interaction logic for UserControl1.xaml
    /// </summary>
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(UserControl1_Loaded);
        }

        void UserControl1_Loaded(object sender, RoutedEventArgs e)
        {
            var eventManager = EventManager.GetRoutedEvents();
            foreach (var routedEvent in eventManager)
            {
                EventManager.RegisterClassHandler(typeof(UserControl1), routedEvent, new RoutedEventHandler(handler));
            }
        }
        internal static void handler(object sender, RoutedEventArgs e)
        {
            Console.WriteLine(e.OriginalSource + "=>" + e.RoutedEvent);
        }
    }
}

Yapmış olduğumuz bu işlem sonrasında artık çalıştırılan eventları izlemek kalıyor. Peki çalıştırdığımızda nasıl bir görünüme kavuşuyor.



Formun üzerinde fare ile dolaştığımızda mouse olayları, tamam diyim bilgilendirmeyi kapattığımızda ise bu mesajı gösteren olayı görürüz.

Umarım yararlı olabilmiştir.

Turhal Temizer

info@turhaltemizer.com
http://turhal.blogspot.com