22 Mar 2009 Silverlight 3 Beta – BasedOn Style Kullanımı Kategori: Silverlight Etiketler: Silverlight 3 BetaSilverlight 1 Yorum Merhaba arkadaşlar, bu makalemizde Silverlight 3 Beta ile birlikte gelen BasedOn Styles özelliğini inceleyeceğiz.Silverlight 3 Beta ile birlikte gelen yeniliklerden biri de BasedOn Styles özelliğidir. BasedOn Style özelliği ile aynı türde kontrollerin benzer özellikleri taşıdığı durumlar da, ortak bir sitil oluşturulup, bu sitilin kontrollere uygulanabilmesini sağlar. Buraya kadar her şey normal aslında ve fark şuradan geliyor. Örneğin elimiz de iki tane Button var. Her iki butonunda FontSize özelliği 14px, arka plan renkleri farklı. Burada şunu yapabiliyoruz. Ortak özellikler için bir style(BasedOn Style), oluşturup, ayırt edici özellikler için her iki kontrole de ayrı ayrı style oluşturuyoruz. Oluşturduğumuz BasedOn style’ı her iki kontrol için oluşturduğumuz style’lara BasedOn özelliğini kullanarak uyguluyoruz. Böylece BasedOn Style'daki bütün özellikler butonlar için oluşturduğumuz sitiller tarafından devralınacak. Silverlight projesi oluşturalın ve konuyu daha detaylı olarak inceleyelim. Projemize 3 button ekleyelim ve butonlar için style'lar oluşturalım. Button'ların ortak özelliği olduğu için de ortak özellikleri uygulayacak bir style oluşturalım. [XAML] <UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SL3BetaBasedOnStyles.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"><Grid Background="White"><Grid.Resources><!— Ortak özellikler için Base Style, Bu style’ı uygulayan bütün style’lar bu style’ın tüm özelliklerini devralacak. TargetType özelliği ile bu sitilin hangi kontrole uygulanacağını belirtiyoruz. --><Style x:Key="BasedStyle" TargetType="Control"><!-- Setter ile bu sitili uygulayacak kontrol için özellik(property) ve o özelliğe atanacak değeri(Value) belirtiyoruz.--><Setter Property="FontSize" Value="14"></Setter><Setter Property="Width" Value="200"></Setter><Setter Property="Margin" Value="5"></Setter></Style><!-- 1. Button için Style, BasedOn özelliği ile belirtilen style’ın tüm özellikleri devralınır. BasedOn style daki tüm özellikleri burada uygulamışız gibi uygulanır--><Style x:Key="Button1Style" TargetType="Control" BasedOn="{StaticResource BasedStyle}"><Setter Property="Background" Value="Blue"></Setter><Setter Property="Foreground" Value="Red"></Setter></Style><!-- 2. Button için Style --><Style x:Key="Button2Style" TargetType="Control"BasedOn="{StaticResource BasedStyle}"><Setter Property="Background" Value="Red"></Setter><Setter Property="Foreground" Value="Navy"></Setter></Style> </Grid.Resources><StackPanel><!— BasedStyle uygulanan button --><Button Style="{StaticResource BasedStyle}" Content="Based Button"></Button><!— Button1Style’i uygulanan button --><Button Style="{StaticResource Button1Style}" Content="Button 1"></Button><!— Button2Style’i uygulanan button --><Button Style="{StaticResource Button2Style}" Content="Button 2"></Button></StackPanel></Grid></UserControl> Uygulamayı çalıştıralım ve sonucu görelim. Button için oluşturduğumuz based style’ı, hatta button’lar için oluşturduğumuz style’ları diğer style’lara uygulayabiliriz. Uygulamamıza bir TextBox ekleyelim ve onun için de bir style yazalım. [XAML] <!-- TextBox için Style oluşturduk ve Button2 için oluşturduğumuz Button2Style’ini uyguladık. TargetType olarak TextBox değerini atadık. Bu style artık sadece ve sadece TextBox kontrolüne uygulanabilecek. --><Style x:Key="TextBoxStyle" TargetType="TextBox" BasedOn="{StaticResource Button2Style}"><Setter Property="TextAlignment" Value="Center"></Setter><Setter Property="FontStyle" Value="Italic"></Setter><Setter Property="FontWeight" Value="Bold"></Setter> </Style><Button Style="{StaticResourceBasedStyle}"Content="Based Button"></Button><Button Style="{StaticResourceButton1Style}"Content="Button 1"></Button><Button Style="{StaticResourceButton2Style}"Content="Button 2"></Button><TextBox Style="{StaticResource TextBoxStyle}" Text="TextBox"></TextBox> Projemizi tekrar çalıştıralım, TextBox için oluşturduğumuz style’daki özellikler TextBox’a uygulanmış. Button2Style’nı BasedOn style yaptığımız için onun özellikler de uygulanmış. TextBox için oluşturduğumuz style’da TargetType özelliğini TextBox yaptığımız için artık bu style’ı sadece TextBox kontrolüne ve TextBox için oluşturacağımız diğer style’lara uygulayabiliriz. Bu makalenin de sonuna geldik başka bir makale de görüşmek üzere. Silverlight ile kalın ;) Sem GÖKSU www.semgoksu.com | www.yazilimgunlugu.com sem.goksu@yazilimgunlugu.com Kaynaklar msdn.com silverlight.net Yorum (1) Kadir AÇIKGÖZ / 22.3.2009 20:59:44 Silverlight Calismalarin Cok Hizli Gidiyor Sem Kendine Zaman Ayırmalısın. Bu Makalende Oldukca Güzel Eline Bilegine Saglık Kardeşim. Yorum Yaz * Ad Soyad: * Email: * Message:
Yorum (1) Kadir AÇIKGÖZ / 22.3.2009 20:59:44 Silverlight Calismalarin Cok Hizli Gidiyor Sem Kendine Zaman Ayırmalısın. Bu Makalende Oldukca Güzel Eline Bilegine Saglık Kardeşim.
Kadir AÇIKGÖZ / 22.3.2009 20:59:44 Silverlight Calismalarin Cok Hizli Gidiyor Sem Kendine Zaman Ayırmalısın. Bu Makalende Oldukca Güzel Eline Bilegine Saglık Kardeşim.