Ahmet Çığşar | WPF Resource Dictionary
543
post-template-default,single,single-post,postid-543,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

WPF Resource Dictionary

WPF Resource Dictionary

ResourceDictionary’leri stil dosyalarımız için bir kaynak kütüphane görevindedir. WPF projelerimizde birden fazla stil dosyalarımızın olduğunu düşünün bu stil dosyalarını tek tek her bir dosyaya bağlamaktansa hepsini tek bir kaynakta toplayıp sadece kaynağı stil uygulayacağımız WPF nesnesine tanıtmak daha mantıklı ve pratik olacaktır

ResourceDictionary kullanmak için öncelikle projemize eklememiz gereklidir. Visual Studio ortamında projemize sağ tıklayarak Add -> Resource Dictionary  seçeneğini seçelim. Karşımıza çıkan ekranda ResourceDictionary’mize bir isim verelim. Ben “DenemeStili.xaml” yazdım.

Şimdi tüm projemizde rahatça referans alabilmek için ResourceDictionary dosyamızı (DenemeStili.xaml) Application içerisinde (App.xaml) tanıtmamız gerekiyor ki istediğimiz zaman kullanalım.  Bunun için App.xaml dosyamızın içerisinde bulunan <Application.Resources> etiketinin içersine <ResourceDictionary Source=”DenemeStili.xaml” /> yazmamız gerekiyor. Aşağıdaki gibi.

<Application.Resources>
     <ResourceDictionary Source="DenemeStili.xaml" />
</Application.Resources>

Burada DenemeStili.xaml eğer bir klasör içerisinde olsaydı o zaman aşağıdaki gibi yazmamız gerekecekti.

<Application.Resources>
    <ResourceDictionary Source="KlasorAdi/DenemeStili.xaml" />
</Application.Resources>

Peki projemize birden fazla ResourceDictionary eklersek bunu nasıl tanıtacağız? App.xaml içerisine şöyle yazarak:

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="DenemeStili.xaml" />
                <ResourceDictionary Source="BaskaBirKaynak.xaml" />
                <ResourceDictionary Source="ButonlaraOzel.xaml" />
                <ResourceDictionary Source="MetinKutulari.xaml" />
                <ResourceDictionary Source="AcilirMenulerIcin.xaml" />                
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

Şimdilik nasıl kullanacağımızı anlatan basit bir örnek yapalım.

Aşağıdaki kodları kopyalayıp/yazıp, projemize daha önce eklediğimiz ResourceDictionary’miz olan DenemeStili.xaml dosyasını açıp içine yapıştırıyoruz.

    <LinearGradientBrush x:Key="SiyahDugme" StartPoint="0,0" EndPoint="0,1">
        <LinearGradientBrush.GradientStops>
            <GradientStop Offset="0" Color="#999"/>
            <GradientStop Offset="0.4" Color="#333"/>
            <GradientStop Offset="0.4" Color="#000"/>
            <GradientStop Offset="1.0" Color="#666"/>
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="TuruncuDugme" StartPoint="0,0" EndPoint="0,1">
        <LinearGradientBrush.GradientStops>
            <GradientStop Offset="0" Color="#FED8AA"/>
            <GradientStop Offset="0.4" Color="#FBB565"/>
            <GradientStop Offset="0.4" Color="#FA9D34"/>
            <GradientStop Offset="1.0" Color="#FDEEAA"/>
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <SolidColorBrush x:Key="Beyaz" Color="White" />

Stillerimizdeki renkleri gradient (geçişli) olacak şekilde yaptık ve geçiş yapılacak renk duraklarını GradientStop etiketleri ile belirledik ve ResourceDictionary’miz olan DenemeStili.xaml içerisine kopyaladık/yazdık.

Şimdi Window alanına aşağıdaki XAML kodlarını kullanarak bir buton ekleyelim.

<Button Content="Güzel Buton"  
Background="{DynamicResource ResourceKey=TuruncuDugme}"
VerticalAlignment="Top" 
Width="152" 
Height="34"/>

wpf-button

Ve butonumuz karşınızda.  Butonumuz arkaplan rengini ResourceDictionary’miz olan DenemeStili.xaml dosyası içerisinden daha önce oluşturduğumuz ve adını “TuruncuDugme” verdiğimiz geçişli (gradient) rengini alıyor.

Diğer butonumuzu oluşturalım.

<Button Content="Güzel Buton" 
Background="{DynamicResource ResourceKey=SiyahDugme}" 
Foreground="{DynamicResource Beyaz}" 
VerticalAlignment="Top" 
Width="152" 
Height="34"/>

wpf-siyah-butonVe siyah butonumuzda hazır. Burada ek olarak Foreground özelliği ile yazının rengini yine DenemeStili.xaml içerisine eklediğimiz ve adını “Beyaz” olarak belirlediğimiz renkte yaptık.

Başka bir yazıda görüşmek üzere…

 

 

Yorum Yapılmamış

Yorum Yapın