Ahmet Çığşar | WPF Resource Dictionary’de String Veri Tanımlama ve Kullanma
1278
post-template-default,single,single-post,postid-1278,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

WPF Resource Dictionary’de String Veri Tanımlama ve Kullanma

WPF Resource Dictionary’de String Veri Tanımlama ve Kullanma

Önceki WPF yazılarında WPF’de ResourceDictionary’i  anlatmaya çalışmış, birkaç örnekte vermeye çalışmıştım. Şimdi ise ResourceDictionary’lere string türünde veri tanımlayıp daha sonra bu veriyi projemizin başka bir yerinde kullanmak üzere çekeceğiz. Projemizde birden farklı yerde yerde kullanılacak string tipindeki verileri tek bir yerden yönetmek daha verimli olacaktır.

NOT:  Makalede yer alan örneğin kaynak kodlarını sayfanın sonunda bulabilirsiniz.

Başlayalım

1. Visual Studio’yu açıyoruz ve File > New > Project seçimini yapıyoruz. Karşımıza aşağıdaki pencere gelecek. WPF Application seçiyoruz ve dilediğimiz bir ad veriyoruz projemize.

_1_proje_ac

2. Solution Explorer‘a gidiyoruz ve MainWindow.xaml dosyamıza çift tıklıyoruz ve XAML alanında <Window> </Window> etiketi içerisine aşağıdaki kodları yapıştırıyoruz.

<Grid Margin="0,0,0,7">
    <Button Content="Button" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="105"/>
    <Button Content="Button" HorizontalAlignment="Left" Margin="120,10,0,0" VerticalAlignment="Top" Width="105"/>
    <Button Content="Button" HorizontalAlignment="Left" Margin="230,10,0,0" VerticalAlignment="Top" Width="105"/>
    <Button Content="Button" HorizontalAlignment="Left" Margin="340,10,0,0" VerticalAlignment="Top" Width="105"/>
    <TextBox HorizontalAlignment="Left" Height="51" Margin="10,49,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="433"/>
    <Label Content="Label" HorizontalAlignment="Left" Margin="10,105,0,0" VerticalAlignment="Top" Width="433"/>
</Grid>

MainWindow’umuz aşağıdaki gibi olacaktır.

_2_taslak

3. Şimdi projemize bir Resource Dictionary ekleyeceğiz. Bunun için Solution Explorer penceremize gelip projemizin adına sağ tıklıyoruz
Add > Resource Dictionary… seçimini yapıyoruz. Karşımıza aşağıdaki pencere çıkacaktır. Resource Dictionary’mizin adını StringVeriler.xaml koyuyoruz ve Add butonuna tıklıyoruz.

_3_resourcedir

4. Şimdi kritik bir adımdayız. Projemize eklediğimiz StringVeriler.xaml adlı Resource Dictionary‘mize çift tıklıyoruz ve XAML alanına giriyoruz. Aşağıdaki namespace’i ekliyoruz.

_4_namespace

Namespace’de mscorlib dikkatinizi çekmiştir. mscorlib hakkında kısa bir bilgi vermek istiyorum.

mscorlib : .Net Framework içerisinde bulunan önemli bir kütüphanedir. 2319 tür barındırır içerisinde ve fiziksel olarak
C:WINDOWSMicrosoft.NETFramework(.Net Framework sürümü)  adresi altında mscorlib.dll içerisindedir.  Resource Dictionary içerisine string türünde veri tanımlayabilmemiz için yukarıdaki namespace’i eklememiz gereklydi, ekledik ve devam ediyoruz.

5. StringVeriler.xaml dosyamıza çift tıklıyoruz ve stringlerimizi tanımlıyoruz. 5, 6 ve 7. satırlardaki kodları yazıyoruz. Aşağıdaki gibi.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:system="clr-namespace:System;assembly=mscorlib">

    <system:String x:Key="btnMerhaba">WPF Yolcusu</system:String>
    <system:String x:Key="txbMerhaba">Merhaba WPF yolcusu ben TextBlock.</system:String>
    <system:String x:Key="lblMerhaba">Merhaba WPF yolcusu ben Label.</system:String>
</ResourceDictionary>

6. Sıra geldi programımıza StringVeriler.xaml Resource Dictionary’mizi tanıtmaya. Bunun için App.xaml dosyasına çift tıklıyoruz ve

<Application.Resources>  </Application.Resources> etiketleri arasına aşağıdaki kodları yazıyoruz. Bu adım bilindik bir Resource tanıtma adımıdır. Önceki yazılarımda bolca görebilecğeiniz bir durumdur.

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
       <ResourceDictionary Source="StringVeriler.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

7. Artık MainWindow.xaml  dosyamıza giderek string verilerimizi kontrollerimizin Content ve Text attribute’larına bağlayabiliriz.
Bu işlemden önce uygulamamızı Build (Ctrl+Shift+B)  etmekte fayda var.

Verileri bağlamaya title kısmından başlayalım. 4.satıra dikkat {StaticResource ResourceKey=titleProgram} ile string verimizi bağlıyoruz.

<Window x:Class="WpfResourceDictionaryString.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="{StaticResource ResourceKey=titleProgram}" Height="350" Width="525">

Aynı işlemleri ResourceKey değiştirerek Button ve Label kontrollerinin Content attributeları içerisine TextBox kontrolumuzun ise Text attribute’u içerisine bağlama işlemlerini yapıyoruz.

8. Uygulamamızı Start Debugging (F5) yapıyoruz. Göreceğiniz üzere tüm metinsel verileri tek bir yerden aldık. Artık bir değişiklik / güncelleme zamanında kontrollerin Content’lerini ve Window’ların title bilgilerini teker teker arayıp isim atamaya çalışmak yerine tüm verileri belirli bir kaynaktan yöneteceğiz.

_5_wpf_string_veri

[wpdm_file id=5]
4 Yorum Var
  • tamer dal
    15:39h, 28 Aralık Cevapla

    kaynak kodları hiçbir yerde göremiyorum. iyi çalışmalar

  • Umut
    12:29h, 17 Mayıs Cevapla

    Allah rızasıı içinn yardım bir projem var projemde şu bir sözlük yapılıcak sozlukte bir kelime giriceksin 4 dilli bir sözlük olucak dil farketmez şimdi açıklıyorum bir kelime giriceksin orneğin at ingilizcese horse ve ardından bir at resmi çıkıak lütfen yardım ederseniz sevinirim…

  • ozge
    10:10h, 14 Ekim Cevapla

    Merhaba;

    Nereye yazacağımı bilemedim buraya yazdım 🙂

    Ben wpf ye helixtoolkit paketini yüklüyorum ama uygulama sadece benim bilgisayarımda çalışıyor. Bu yüklediğim eklentinin başka bilgisayarlarda çalışması için ne yapmalıyım? Setup alıncada işe yaramıyor.

    Helix eklentisini package managerdan yüklüyorum.

Yorum Yapın