DevExpress WPF ve Silverlight Tema Yenlikleri (v2011 vol 2’de)

DevExpress WPF ve Silverlight Tema Yenliklerinin v2011 v2’de geleceği duyuruldu. Buna göre DevExpress Seven ve Office 2010 Black temaları şu anki var olan temalara dahil edilmiş oluyor.

WPF ve Silverlight temalarıyla ilgili daha önceki yazım için:

DevExpress WPF, Silverlight & ThemeManager

İ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.

%d blogcu bunu beğendi: