Mar
27
2013

Wpf Trigger Kullanimi

Merhaba Arkadaşlar,

Bu yazımda wpf trigger kullanımı anlatmaya çalışıyor olacağım.

Wpf  trigger  istediğimiz event (olay)  gerçekleştiğinde belirlediğimiz kontrollerin veya elementlerin property’lerini değiştirmemizi sağlar. Wpf’de trigger kullamamızın bize sağladığı faydalara bakarsak  controllerimizin  eventlerini  codebehind yakalarsak  bizim kodumuz şişecek ve kod kalabalığı olacaktır yani kodumuz temiz bir kod olmayacaktır. Trigger kullanarak xaml tarafında rahatlıkla bu işleri halledebiliriz.

TriggerBase sınıfından türemiş  beş farklı trigger vardır. Bunlar Trigger, MultiTrigger, DataTrigger, MultiDataTrigger,EventTrigger’dır.

EventTrigger pratikte en çok kullanılan triggerdır.

Küçük örnekler yaparak wpf trigger kullanımı örneklemeye çalışalım. Senaryomuz ise  MainWindow üzerine bir adet TextBox kontrolu ekleyelim.  Üzerine  fare  ile  geldiğimizde bunu tetikleyerek arkaplan rengini değiştirelim.

File->New Project ->Visual C# ->Wpf Application  bir proje oluşturalım.

Projemizin üzerine sağ tıklarak add kısmından ResourceDictionary ekleyip  Trigger diye isimlendirelim.

trigger

 

<Style TargetType=”TextBox”>   TargetType  TextBox  diyerek sayfamızdaki bütün  TextBox  triggerimizin geçerli olacağını sağlıyor.

ResourceDictionarydaki Kodlar

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Background" Value="Red"></Setter> 
            </Trigger>     
        </Style.Triggers>
    </Style> 

</ResourceDictionary>

MainWindow.xaml altındaki kodlarda ResourceDictionary kullanabilmek için Window.Resources altına gerekli tanımlamaları yapıyoruz. İki adet TextBox ekliyoruz.

<Window x:Class="WpfVisualTrigger.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Trigger.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
        <Grid x:Name="LayoutRoot">
        <TextBox  x:Name="TextBox" Margin="96,67,232,216"></TextBox>
        <TextBox Height="23" HorizontalAlignment="Left" Margin="96,109,0,0" Name="textBox1" VerticalAlignment="Top" Width="175" />
    </Grid>
</Window>

wpf trigger

 

Triggerımızın tüm kontrollerde geçerli olması için yapmamız gerek bir kaç değişilikler var.

ResourceDictionarydaki  <Style TargetType=”TextBox”>  kısmını  <Style x:Key=”TriggerEvent” TargetType=”Control”> olarak değiştiriyoruz.  Tüm kontroller için geçerli olması için TargetType=”Control” yaptık  ve konrollerde kullacağımız bir key verdik.

MainWindow.xaml yaptığımız değişiklik ise trigger kullancağımız kontrollerin Style=”{StaticResource TriggerEvent}” özelliğini değiştirdik.

 

wpf-trigger-label

 

Kolay Gelsin.

 

 

 

Yazar Hakkında

Harun Balta 63 adet yazısı bulunuyor..

Bilgisayar Mühendisliği Üzerine çalıştığım konular: C# , .Net , Silverlight , WPF , Entity Framework ,MVVM, Oracle ,Pl/Sql

Print Friendly