İpinUcu ~ 88 – WPF DevExpress ThemeManager’ın Kullanımı


WPF DevExpress ThemeManager, klasik Windows Formları için bildiğimiz defaultLookandFeel nesnesinin WPF’teki karşılığıdır. Ama ne yazık ki henüz tema yelpazesi pek geniş değil.  Örneğe geçelim:

<ComboBox x:Name="cmbTemalar" SelectionChanged="cmbTemalar_SelectionChanged">
            <ComboBoxItem Content="Office2007Silver" />
            <ComboBoxItem Content="Office2007Blue" />
            <ComboBoxItem Content="Office2007Black" />
            <ComboBoxItem Content="DeepBlue" />
            <ComboBoxItem Content="LightGray" />        
            <ComboBoxItem Content="Seven" />
            <ComboBoxItem Content="Azure" />
        </ComboBox>

Combobox’ın tüm elemanları aynı zamanda DevExpress’in WPF için hali hazırda gelen temalarıdır. Bizim burada yapacağımız iş, ComboBox’tan herhangi bir tema seçildiğinde söz konusu formdaki tüm elemanların temasının değiştirilmesini sağlamak. C# tarafına (code behind) geçelim:

   private void cmbTemalar_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            ThemeManager.SetThemeName(windovvv, cmbTemalar.SelectionBoxItem.ToString());           
        }

ComboBox’taki seçim değiştiğinde yapılacak olan iş, windovvv adlı nesnenin temasını combobox’ta seçilenle değiştirmek. Buradan aynı zamanda WPF ComboBox’ın seçilen elemanının nasıl seçildiğini de görmüş oluyoruz. =]

Burada yazdığımız vindovvv, benim üzerinde çalıştığım pencerenin adı. Haliyle söz konusu penceredeki tüm nesnelerin temalarını değiştiriyor. İsterseniz tek bir nesne için de ayarlayabilirsiniz.

Evet, gördüğünüz gibi ben tüm temaları ComboBox’a tek tek ekledim. Bunun kabul edilebilir bir tarafı yok. Çünkü programcı dediğiniz insanın bunu bu yolla değil, daha mantıklı bir yolla ekleyebiliyor olması gerekiyor. Bu utançtan kurtulmak için size gereken for döngüsünü veriyorum:

 for (int i = 0; i < Theme.Themes.Count; i++)
	{
          cmbTemalar.Items.Add(Theme.Themes[i].ToString());
        }

Eveet, sıra geldi bir temayı tek bir nesne için değil, tüm UserControl, Window vsler için kullanmaya. Yani tüm tasarı için. Bunun için de şunu yapıyoruz:

    ThemeManager.ApplicationThemeName = cmbTemalar.SelectionBoxItem.ToString();

Tüm bunları c# (code behind) tarafında yaptık. Şimdi de XAML tarafında yapalım. Window etiketlerinin arasına şu eklemeyi yapıyoruz:

            xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
            dx:ThemeManager.Theme="Office2007Blue"

Daha da başka bir özelliği yoktur herhalde diye düşünüyorum. =]

Haydi kolay gelsin.

Hakkında Mehmet KAPLAN
mehmet.kaplan@hotmail.com.tr https://mehmetkaplan.wordpress.com/mehmetkaplan/

One Response to İpinUcu ~ 88 – WPF DevExpress ThemeManager’ın Kullanımı

  1. Geri bildirim: DevExpress WPF ve Silverlight Tema Yenlikleri (v2011 vol 2′de) « Mehmet KAPLAN

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: