XAML Editörleri

WPF ya da Silverligth’la uğraşan programcılar Visual Studio’nun XAML editörünü genelde beğenmez ve farklı editör arayışına girer. Şüphesiz Expression Blend iyi bir editör ancak farklı alternatifleri de yok değil. Örneğin XAMLPAD, SDK içinden çıkan basit ama güzel bir editör ya da KAXAML bir 3. parti editör olarak tavsiye edilebilir.

Reklamlar
WPF Windows Presentation Foundation

WPF Windows Presentation Foundation Kitabı Çıktı

Uzun bir süredir üzerinde çalışmakta olduğum WPF Windows Presentation Foundation kitabım pusula yayıncılıktan çıktı. Okurlarım Türkçe kullanımına ne kadar dikkat ettiğimi bilirler, bu kitapta da öğretici, sade ve düzgün bir dil kullandım. Çünkü internetteki yazılarda hep eleştiregeldiğim VJ ağzıyla yazılmış bozuk Türkçeli yazılara çok kızıyorum. Hep kızdığım bir şey de; bu maalesef kitaplarda da yapılıyor ele alınan konuya hayran kalmış onu öve öve bitiremeyen yazar klişesi. Ben konuyu şövenist bir tutumla anlatmak yerine eleştiriler de yaparak, zaman zaman API,MFC, Swing ya da QT gibi farklı teknolojilerle karşılaştırarak, benzerliklerine dikkat çekerek ele aldım. Herşeyden önemlisi C ve Sistem Programcıları Derneğinin genel çizgisi ve tarzında yani bir sistem programcısının bakış açısıyla WPF’i inceledim. Özellikle bazı bölümlerde bu durum dikkatinizi çekecektir. Ayrıca kitapta XAML, MVC, WCF (Windows Communication Foundation) ve Blend ile ilgili de başlıklar bulacaksınız. Kitapta ele alınan başlıklar ise şöyle;
•             MVC ve MVVM Patern’lerinin kullanımı
•             XAML kullanımı
•             Paneller ve Diğer Nesneler
•             Routed Event ve Komutlar
•             WPF’te Kaynak Kullanımı
•             WPF’te DataBinding işlemleri
•             XBAP, BAML vb kavramlar
•             WPF ile animasyon uygulamaları
•             Çizim işlemleri
•             WPF’te Win32 mesajlarının yakalanması
•             WPF MultiThread Programlama
•             WPF’te Tema ve stil uygulamaları
•             WCF kullanımı
•             .NET Framework 4.0 Eklentileri
•             Expression Blend’in Kullanımı
•             Ve diğerleri .

Kitap temini, WPF ve Silverlight eğitimleri için info@aykuttasdelen.net adresinden yazara ulaşabilirsiniz…

XAML Üzerinde Programatik İşlemler

Not : Bu yazı Aykut TAŞDELEN’in WPF kitabından alıntıdır izinsiz kullanımı suçtur ! Konuyla ilgili diğer kısımlar kitapta yer almaktadır.

XAML kodları ve dosyaları üzerinde programatik okuma ve yazma işlemleri gerçekleştirilebilir. System.Windows.Markup namespace’indeki XamlReader ve XamlWriter sınıfları bu işlemler için özelleşmiştir.

XamlReader sınıfına ilişkin Load() ve LoadAsync() metotları senkon ve asenkron biçimde xaml içeriğini uygun bir WPF nesnesine yüklemeye yarar.  Örneğin aşağıdaki kod, bir string değişkende tutulmakta olan xaml içeriğinin (bu bir .xaml dosyasından okunarak elde edilmiş de olabilirdi) Canvas nesnesine yüklenmesini ve bu içerikte bulunan btnTest isimli düğmenin FindName() ile bulunarak content’inin değiştirilmesini örneklemektedir.

string xmal = @”<Canvas Width=’400′ Height=’350′ xmlns=’http://schemas.microsoft.com/winfx/2006/xaml/presentation&#8217; xmlns:sys=’clr-namespace:System;assembly=mscorlib’ xmlns:x=’http://schemas.microsoft.com/winfx/2006/xaml’&gt;

<Rectangle Height = ‘100’ Canvas.Left = ‘100’ Canvas.Top=’100′ Fill=’Gray’>

<Rectangle.Width>

100

</Rectangle.Width>

</Rectangle>

<Polygon Stroke=’Blue’ Points=’0, 0 100, 100 50, 30′>

</Polygon>

<Button Name=’btnTest’ Width=’100′ Height=’30’ Canvas.Top=’50’ Canvas.Left=’60’> Okay </Button>

<ListBox Width=’200′ Height=’300′ Canvas.Left=’170′ Canvas.Top=’50’>

<Rectangle Width=’50’ Height=’15’ Fill=’Navy’>

</Rectangle>

<ListBoxItem> 200 </ListBoxItem>

<ListBoxItem> 300 </ListBoxItem>

</ListBox>

</Canvas>

“;

 

Canvas canvas = (Canvas) XamlReader.Load(
                new XmlTextReader(new StringReader(xmal)));

 

this.Content = canvas;

Button button = (Button) canvas.FindName(“btnTest”);

button.Content = “Test”;

 

Aşağıdaki örnekteyse bir Button nesnesinin Save() ile XAML’e kaydedilişi ve sonra tekrar yüklenişi gösterilmiştir :

Button btn = new Button();

btn.Height = 40;

btn.Width = 80;

btn.Background = Brushes.Azure;

btn.Content = “Deneme”;

 

// Kaydet

string strBtn = XamlWriter.Save(btn);

 

// Yükle

StringReader stringReader = new StringReader(strBtn);

XmlReader xmlReader = XmlReader.Create(stringReader);

Button btn2 = (Button)XamlReader.Load(xmlReader);

 

this.Content = btn2;