Uygulamalarımızda standart bazı işlemleri yapma ihtiyacı duyabiliriz. “Cut”,”Copy”,”Paste” gibi… WPF bu standart işlemleri kendi uygulamalarımızda kolayca kullanabilmemizi “ApplicationCommands” kavramı ile sağlıyor. Ve bir çok kod kalabalığından bizi kurtarıyor.

Aşağıda yazdığım basit örnek üzerinden gidersek sanırım daha anlaşılır olacaktır.

1 <Grid>

2 <!–  –>

3 <TextBox Height=“23” HorizontalAlignment=“Right” Margin=“0,50,229,0” Name=“txtText” VerticalAlignment=“Top” Width=“120” />

4 <Menu Margin=“0,0,0,285”>

5 <MenuItem Command=“ApplicationCommands.Cut” Header=“Kes” />

6 <MenuItem Command=“ApplicationCommands.Copy” Header=“Kopyala” />

7 <MenuItem Command=“ApplicationCommands.Paste” Header=“Yapıştır” />

8 </Menu>

9

10 <!–

11 Bu düğmeye basıldığında ApplicationCommands.Cut komutu(Command) çalışacak.

12 Hangi kontrol üzerinden çalışacağını CommandTarget özelliği ile belirleyebiliyoruz.

13 txtSource isimli textbox içerisindeki değer,btnCut‘a bastığımız zaman “Cut” komutu

14 clipboard tarafında gerekli işlemi yapacaktır.

15 –>

16 <Button x:Name=“btnCut” Content=“Kes” Command=“ApplicationCommands.Cut” CommandTarget=“{Binding ElementName=txtSource}” Margin=“12,120,384,161”></Button>

17 <TextBox x:Name=“txtSource” Margin=“125,120,177,161”></TextBox>

18 </Grid>

Yukarıdaki kod bloğunda görmüş olduğunuz gibi bir tane “Menu” yaratıyoruz. Bu menünün 3 tane “MenuItem”ı var. Standart bir uygulamadıki “Kes”,”Kopyala”,”Yapıştır” işlemlerini yapıyor. Bu menü elemanlarına basıldığında ne yapılacağını “Command” özelliğini kullanarak belirtebiliyoruz. Bu örneğimizde “ApplicationCommands” kavramından bahsediyor olduğumdan dolayı, “ApplicationCommands.Cut”,”ApplicationCommands.Copy”,”ApplicationCommands.Paste” komutlarını kullandık. Bu komutlar sayesinde bu standart işlemler için ekstra bir şey yapmamıza gerek yok. Tabi ki uygulamamızın özelliklerine göre kendi “Command”(komutlarımızı) yazabiliriz.

Uygulamamızı çalıştırdığımız zaman aşağıdaki gibi bir ekran görüntüsü bizi karşılayacaktır.

Dikkat ederseniz tüm menü elemanları ve diğer “Kes” düğmemiz aktif değil. Bunun nedeni “ApplicationCommands” ilgili komutları bizim için yönetiyor olması. Uygulamamızda kesip yada kopyalanacak bir şey olmadığından dolayı ilgili komutların tüm tetikleyicileri aktif değil. Bu uygulama dışında her hangi başka bir uygulamadan bir kopyalama ya da kesme işlemi yapıp bu uygulamaya döndüğünüzde menüdeki “Yapıştır” elemanının aktif olduğunu göreceksiniz.

Ya da büyük kes düğmesinin yanındaki TextBox’a herhangi bir değer girip seçtiğinizde, “Kes” düğmesinin aktif olduğunu göreceksiniz.Bunun nedeni “Kes” düğmesinin “CommandTarget” özeliğinin TextBox’a ayarlanmış olması.

“Kes” düğmesine bastığımzda, tekrardan “Kes” düğmesi aktifliğini kaybedecektir. Eğer ekrandaki hiç bir TextBox’da “focus” yok ise menüdeki “Yapıştır” elemanının aktif olmaması dikkatinizi  çekmiştir. Bunun nedeni de “Yapıştır” işleminin yapılacağı her hangi bir kontrolün seçilmemiş olması. Menünün altında ki TextBox’ı seçtiğimizde ve “Yapıştır” dediğimizde kestiğimiz yazının yapıştığını göreceksiniz.Bu kadar basit…:)

ApplicationCommands gibi, WPF’de  “NavigationCommands”, “MediaCommands”, “EditingCommands” ve  “ComponentCommands” sınıflarıda bazı işlemler için bize kolaylıklar sunuyor.

Burada altınız çizmek istediğim bir nokta var. Dikkat ettiyseniz ApplicationCommands.Cut komutunu iki farklı WPF kontrolünde tanımladık ve her hangi başka bir işlem yapmadan bu komut aynı şekilde çalıştı. Bunun altında WPF ile beraber ortaya çıkan “Commands” kavramı yer almakta. İlerleyen yazılarda bundan da bahsediyor olacağım.