TOC

This article has been localized into Turkish by the community.

XAML:

XAML'de Olaylar

Modern Kullanıcı Arayüzü çerçevelerinin (UI-Framework) bir çoğu olay tabanlıdır, WPF de aynı şekilde. Tüm kontroller, kontrol sınıfını miras alan Pencere 'de (Window) dahil olmak üzere, kayıt olabileceğiniz bir dizi olaya sahiptir. Söz konusu olaylara abone olabilirsiniz; böylece; ilgili olay gerçekleştiği zaman size bildirileceği ve buna tepki verebileceğiniz anlamına gelir.

Pek çok farklı türde etkinlik vardır, ama en çok kullanılanların bazıları kullanıcının fare yada klavye vasıtasıyla uygulamanız ile etkileşimlerine karşılık verenlerdir. Pek çok kontrolde Düğme Basma (KeyDown), Düğme Bırakma (KeyUp), Fare Basma (MouseDown), Fare Giriş (MouseEnter), Fare Çıkış (MouseLeave), Fare Bırakma (MouseUp) ve bir kaç farklı etkinlikler bulacaksınız.

WPF'de etkinliklerin nasıl çalıştığına, karmaşık bir başlık olduğundan, daha yakından bakacağız, ancak şimdilik XAML'de bir kontrol etkinliğini arka plan kod dosyanızdaki bir parça koda nasıl bağlayabileceğinizi bilmeniz gerek. Aşağıdaki örneğe bir göz atın:

<Window x:Class="WpfTutorialSamples.XAML.EventsSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="EventsSample" Height="300" Width="300">
	<Grid Name="pnlMainGrid" MouseUp="pnlMainGrid_MouseUp" Background="LightBlue">        
		
    </Grid>
</Window>

Fare Bırakma (MouseUp) etkinliğine bir yöntem (Method) adı yazarak nasıl kaydolduğumuza dikkat edin. Bu yöntem arka plan kodunuzda doğru etkinlik imzası kullanılarak tanımlanmalıdır, Bu durumda bu kod şunun gibi gözükecektir:

private void pnlMainGrid_MouseUp(object sender, MouseButtonEventArgs e)
{
	MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
}

Fare Bırak (MouseUp) etkinliği FareDüğmeEtkinlikİşleyicisi (MouseButtonEventHandler) adlı sizin de kayıt olduğunuz bir vekil kullanır. Bunun iki parametresi vardır, bir "Gönderen" (Sender) (etkinliği tetikleyen kontrol) ve faydalı bilgiler barındıran bir FareDüğmesiEtkinlikArg (MouseButtonEventArg) nesnesi. Bu örnekte biz bunu fare imleci konumunu alarak kullanıcıya bildirmek için kullanacağız.

Bazı olaylar aynı temsilci türünü (delegate) kullanabilir; örneğin, hem MouseUp hem de MouseDown, MouseButtonEventHandler temsilcisini kullanırken; MouseMove olayı MouseEventHandler temsilcisini kullanırlar. Olay işleyicisi (EventHandler) metodunu tanımlarken, hangi temsilciyi kullandığını bilmeniz gerekir ve eğer bilmiyorsanız ilgili temsilcinin dokümanlarına bakabilirsiniz.

Şansımıza Visual Studio bir etkinlik için doğru etkinlik işleyiciyi oluşturmamıza yardım edebilir. Bunu yapmanın en kolay yolu XAML'de basitçe etkinlik ismini yazmak ve VS'nin akıllı duyu özelliğinin geri kalan kısmı sizin için halletmesine izin vermeniz:

<Yeni Etkinlik İşleyici (New Event Handler) > seçtiğinizde Visual Studio arka plan kodunuzda uygun bir etkinlik işleyici oluşturacaktır. Bu <Kontrol Adı >_<Etkinlik Adı> şeklinde, bu durumda pnlMainGrid_MouseDown gibi olacaktır. Etkinlik adına sağ tıklayarak Etkinlik İşleyiciye Git (Navigate to Event Handler) seçeneğini seçin ve VS dizi doğrudan ona götürecektir.

Arka Plan Kodu ile bir etkinliğe kaydolma

Bir etkinliğe kayıt olmanın en genel yöntemini yukarıda anlattık ama bazı durumlarda etkinliğe doğrudan arka plan kodunuzdan kayıt olmak isteyebilirsiniz. Bu, etkinlik işleyiciyi doğrudan nesne üzerinden eklediğiniz +=C# söz dizilimini kullanarak yapılır. Bu konunun tam açıklaması ilgili C# örneğine aittir ama kıyaslama için burada da kullanabiliriz:

using System;
using System.Windows;
using System.Windows.Input;


namespace WpfTutorialSamples.XAML
{
	public partial class EventsSample : Window
	{
		public EventsSample()
		{
			InitializeComponent();
			pnlMainGrid.MouseUp += new MouseButtonEventHandler(pnlMainGrid_MouseUp);
		}

		private void pnlMainGrid_MouseUp(object sender, MouseButtonEventArgs e)
		{
			MessageBox.Show("You clicked me at " + e.GetPosition(this).ToString());
		}

	}
}

Bir kere daha hangi vekili kullanacağınızı bilmek durumundasınız ve bir kez daha Visual Studio size bu konuda yardımcı olabilir. Yazdığınız anda:

pnlMainGrid.MouseDown +=

Visual Studio size yardımını sunacaktır:

Visual Studio'nun doğru etkinlik işleyiciyi, mevcut yöntemin hemen altına, uygulaya hazır biçimde sizin yerinize oluşturması için basitçe Sekme tuşuna iki kere basın. Bu şekilde bir etkinliğe kayıt olduğunuzda XAML içinde tekrar yapmanıza gerek yoktur.