Salı, Ağustos 11, 2009

WPF – Routed Event Kontrol Etmek

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. 

RoutedEvent

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

Hiç yorum yok: