Abdurrahman KÖKEN | BLOG

just a developer... | Microsoft Student Partner

Yazılım Geliştirmede Yeni Misin?

Ağustos 27
by Abdurrahman Köken 27. Ağustos 2010 02:25

Eğer yazılım geliştirmeye yeni başladıysanız size başlangıç için MSDN Beginner Developer Centre ‘a şiddetle gözatmanızı tavsiye ediyorum. Özellikle başlangıç seviyesindeki geliştiriciler için çok iyi bir yol gösterici olduğunu düşünüyorum. Eğer sen de hazırsan şampiyon ol ve projeni göster.

Microsoft Teknoloji Günleri-Akşam Sınıfı Etkinliği

Ağustos 24
by Abdurrahman Köken 24. Ağustos 2010 00:44

Microsoft ve iş ortaklarıyla beraber gerçekleştirilen Microsoft Teknoloji Günleri Akşam Sınıfı etkinliği tüm hızıyla devam ediyor. Sırada MVP olan sevgili Burak Selim Şenyurt hocamın sunum yapacağı WCF Eco System etkinliği var. En alttaki linklerden etkinliğe kaydınızı yaptırabilirsiniz. Aşağıda detaylarını bulabileceğiniz ve sizler için hayli faydalı olacağına inandığımız Microsoft Teknoloji Günleri Akşam Sınıfı Etkinliğimize kaydınızı hemen yaptırabilirsiniz.

14 Eylül 2010 Salı: WCF Eco System: (3 Saat) WCF alt yapısı üzerine kurulu olan WCF Eco System içerisinde Data Services, Workflow Services, RIA Services, WebHttp Services ve Core Services tipleri yer almaktadır. Bu eğitimde Data Services, Workflow Services, RIA Services ve WebHttp Services konulu örneklergeliştiriecek ve söz konusu alt yapı ile değerlendirilebilecek hazır servis modelleri irdelenecektir.

20 Eylül 2010 Pazartesi: Windows Server AppFabric: (2 Saat) Bu eğitimde WCF ve Workflow servis örneklerinin izlenmesi, sorunların teşhis edilmesi, örneklerin yaşam döngülerinin takibi, yapılandırma ayarlarının belirlenmesi gibi birçok yönetimsel konuda geliştiriciler ile BT yöneticilerinin daha kolay anlaşabilmelerini de sağlayan Dublin kod adlı Windows Server AppFabric ürün ailesi incelenecektir. Özellikle IIS üzerine gelen eklentiler ile söz konusu yönetsel işlemlerin nasıl yapılabildiği hakkında ayrıntılı bilgiyi bu oturumda bulabileceksiniz.

20.Ekim.2010/Çarşamba: Worfklow Foundation 4.0 : (3 Saat) WF 4.0 beraberinde pek çok köklü yenilik ile gelmektedir. Geliştirilen Base Activity Library, paralel programlama desteği, veri akışı için gelen Argument, Variable gibi kavramlar ve daha pek çoğunun ele alındığı eğitimde basit örnekler ile WF modelin tanıtılmaya çalışılmaktadır.

23.Kasım.2010/Salı: Asp.Net 4.0 : (3 Saat) Web Programlama’ nın .Net 4.0 ile birlikte gelen yeni yüzünü görmeye hazır mısınız? Pek çok yeni özellik ile birlikte gelen Asp.Net 4.0’ ın anlatıldığı bu eğitimde, temelden orta seviyeye kadar basit bir web uygulaması tasarlanmakta ve konunun daha iyi kavranabilmesi amaçlanmaktadır.

20.Aralık.2010/Pazartesi: Visual Basic 2010 : ( 2 Saat) Bu eğitimde Visual Basic 2010 programlama dili ile birlikte gelen pek çok yeni özellik üzerinde durulmakta ve geliştirilen örnekler ile bu kavramlar pekiştirilmeye çalışılmaktadır. Bu noktada AutoImplemented Properties, Collection Initializers, Implicit Line Continuation, Mutlipe Lambda Expressions, Dynamic keyword, Type Equivalance Support gibi konular üzerinde durulmaktadır.

20.Ocak.2011/Perşembe: WPF 4.0 ile Windows Programlama : (3 Saat) .Net 3.0 ile birlikte duyurulan Windows Presentation Foundation modeli ile zengin kullanıcı deneyimine sahip windows uygulamaları tasarlanabilmektedir. Özellikle Windows 7 üzerinde en iyi kullanıcı deneyimini sunan WPF 4.0 ile birlikte gelen yenilikleri öğrenmeye ne dersiniz?

Tarih 
14 Eylül 2010 Salı - WCF Eco System
Saat
19.00 - 21.30
Yer
Microsoft İstanbul Ofisi
Eğitmen:
Burak Selim Şenyurt
Microsoft MVP

Kayıt Ol 

Tarih 
20 Eylül 2010 Pazartesi - Windows Server AppFabric
Saat
19.00 - 21.30
Yer
Microsoft İstanbul Ofisi
Eğitmen:
Burak Selim Şenyurt
Microsoft MVP

Kayıt Ol 

WPF-Nümerik TextBox Attached Property Oluşturma

Ağustos 21
by Abdurrahman Köken 21. Ağustos 2010 01:33
Attached property’ler bildiğiniz gibi dependency property’lerin özelleşmiş bir tipidir.Daha önceki makalelerimde attached property ve dependency property’lerden bahsetmiştim.Bugün bu konuyu daha iyi anlamak için örnek bir attached property yazacağız.Property’miz bir TextBox’a sadece rakam girilmesini sağlayacak yani nümerik TextBox özelliği sağlayacak.Burada yapacağımız en önemli iki hamle ilk olarak clipboard da bulunan verinin TextBox’a yapıştırılmasını engellemek.Burada engellememizin amacı o veriyi inceleyip içinde rakamdan başka veriler olma ihtimalidir.Veriyi inceleyip komutun çalışıp çalışmamasını sağlamalıyız.

Son hamlemiz ise TextBox’a her bir  veri girişini yakalayıp rakam olup olmadığını kontrol etmemiz gerekmektedir.Önceki makalelerimde de belirttiğim gibi attached property ler farklı sınıflarda bulunmaktadırlar.Öncelikle NumericTextBox adında bir sınıf oluşturuyorum ve bu sınıfta boolean tipinde IsEnabled adında bir attached property tanımlıyorum. UIPropertyMetadata’sında varsayılan değerini false olarak atayıp değer her değiştiğindeki olayı yakalamak için aşağıdaki gibi OnIsEnabledPropertyChanged adında bir static metot yazıyorum:

public static void OnIsEnabledPropertyChanged(DependencyObject sender,DependencyPropertyChangedEventArgs e)
 {
   TextBoxBase txtBox = sender as TextBoxBase;
   txtBox.PreviewKeyDown -= OnKeyDown;
   DataObject.RemovePastingHandler(txtBox, OnClipboardPaste);
   if ((bool)e.NewValue)
    {
      txtBox.PreviewKeyDown += OnKeyDown;
      DataObject.AddPastingHandler(txtBox, OnClipboardPaste);
    }
  }

 

Burada ilgili TextBox’ın OnKeyDown ve clipboard yapıştırma olay tutucusu siliniyor.Çünkü sadece attached property’miz true olduğu sürece rakam kontrolünü yapması gerekiyor.OnClipboardPaste event handler’ında  clipboard’daki bulunan veriyi alıp içinde tüm verinin rakam olup olmadığını kontrol etmeliyiz.Eğer harf ya da alfanümerik  karakterler varsa komutun çalışmasını engellemeliyiz:

private static void OnClipboardPaste(object sender,DataObjectPastingEventArgs e)
   {
       string text = e.SourceDataObject.GetData(e.FormatToApply) as string;
       if (!string.IsNullOrEmpty(text))
        {
           if (text.Count(p=>!Char.IsNumber(p))==0)
             {
                return;
             }
        }
       e.CancelCommand();
   }

OnKeyDown event handler’ında ise Enter,CTRL ve Shift gibi bazı özel karakterler ve rakamlar haricinde TextBox’a veri girişini e.Handled özelliğini true yaparak engellemeliyiz.Son olarak yazdığımız attached property’i kullanabilmek için sınıfımızı XAML tarafında isim uzayına eklemeliyiz.Daha sonra aşağıdaki gibi property’mizi set edebiliriz.

<TextBox Width="180" local:NumericTextBox.IsEnabled="True"/> 

Uygulamanın kaynak kodlarına aşağıdaki linkten ulaşabilirsiniz.

Teşekkürler. 

Kaynak Kod-NumericTextBox.zip (37,54 kb)

WPF-Otomatik Stil Uygulama

Ağustos 20
by Abdurrahman Köken 20. Ağustos 2010 00:33

Uygulamalarımızda bulunanan elementlerimizin görünüşü değiştirmek için XAML’da stilleri kullanırız.Diyelim ki uygulamamızda bulunan butonlara stil vermek istiyoruz.Örnek olarak şu şekilde bir stilimiz olduğunu varsayalım:

<Window.Resources>
 <Style x:Key="buttonStyle" TargetType="{x:Type Button}">
  <Setter Property="FontSize" Value="24"/>
  <Setter Property="Foreground" Value="ForestGreen"/>
  <Setter Property="FontWeight" Value="Bold"/>
 </Style>
</Window.Resources>

Yukarıdaki stilimizi butonlara uygulamak içinse her bir butonun Style property’sinde hazırlamış olduğumuz  stili aşağıdaki gibi belirtmemiz gerekir:

<Button Content="Click" Style="{StaticResource buttonStyle}"/>
Eğer uygulamamızdaki bütün butonlara aynı stili tek tek yerine hepsine aynı anda uygulamak istiyorsak  stilimizdeki x:Key attribute’unu kaldırmamız yeterli olacaktır.Sadece TargetType belirterek o tiple eşleşen tüm elementlere stili otomatik uygulatabiliriz.Bunu yapmanın diğer bir yolu ise TargetType attribute’unu kaldırıp x:Key’de element tipini belirtmektir.

1.yol

<Style TargetType="{x:Type Button}">
  <Setter Property="FontSize" Value="24"/>
  <Setter Property="Foreground" Value="ForestGreen"/>
  <Setter Property="FontWeight" Value="Bold"/>
</Style>

2.yol

<Style x:Key="{x:Type Button}">  
 <Setter Property="Button.FontSize" Value="24"/>  
 <Setter Property="Button.Foreground" Value="ForestGreen"/>  
 <Setter Property="Button.FontWeight" Value="Bold"/>
</Style>

Gördüğünüz gibi kolayca stillerinizi otomatik olarak elementlere  uygulayabilirsiniz.Hatta stil uygulanmasını istemediğiniz kontrolleri

<Button Content="Click" Style="{x:Null}"/>

şeklinde belirtebilirsiniz.İlk yolu deneyerek yazdığım uygulamanın XAML kodunu ve çıktısını bulabilirsiniz.

<StackPanel> 
 <Button Content="Click"  Width="100" Height="50"  /> 
 <Button Content="Click"  Width="100" Height="50" Style="{x:Null}"/> 
 <Button Content="Click"  Width="100" Height="50"/>
</StackPanel>

Kolay gelsin.

 

Tags: , ,

WPF

2010-2011 MSP Programı Başvuruları

Ağustos 12
by Abdurrahman Köken 12. Ağustos 2010 12:33

 

Herkese merhabalar,

2010-2011 Microsoft Student Partner başvuruları başladı.Öğrenci arkadaşlar sizlere sesleniyorum eğer siz de teknoloji tutkunuysanız ve üniversiteniz ile Microsoft arasında bir köprü kurmak istiyorsanız bu fırsatı kaçırmayın derim.MSP programı sürecinde yapılan etkinliklerde pek çok deneyim kazanabilirsiniz en önemlisi pek çok yeni insanla tanışarak kalıcı dostluklar edinebilirsiniz.Bu deneyimleri yaşama fırsatını yakalamak için son başvuru tarihi 26 Ağustos Perşembe günü.

Başvuru ve detaylı bilgi için buraya tıklayın.

Tags:

Genel

WPF-Ribbon Kontrolü RTW Versiyonu Yayınlandı

Ağustos 08
by Abdurrahman Köken 8. Ağustos 2010 13:03

Geçtiğimiz günlerde Microsoft Ribbon‘ın Temmuz sürümü yayınlandı.Ribbon kontrolünün yeni sürümü WPF 3.5 SP1 ve WPF 4 ile uyumlu hale getirilmiş.En önemli özelliği ise tamamen WPF implementasyonunun olmasıdır yani bir  wrapper değil.Bu da yeni ribbon kontrolü için WPF’in tüm stil yeteneklerini uygulayabiliriz demek oluyor.Ayrıca Ribbon Installer kurduktan sonra Visual Studio ve Expression Blend için  de “WPF Ribbon Application” adında yeni bir şablon oluşturmaktadır.Ne yazık ki bu proje şablonu Visual Studio’nun Express sürümlerini desteklememektedir.Bu şablon başlangıç için basit bir Ribbon kontrolü içermektedir.Aşağıda Ribbon projesi oluşturulup çalıştırıldığında varsayılan olarak gelen kontrolün ekran görüntüsünü bulabilirsiniz.

 

 

Özellik olarak da RibbonButton’ların ICommand  desteklediğini de belirtmek istiyorum.Rahatlıkla MVVM ile geliştirdiğiniz uygulamalarınızda kullanabilirsiniz.Son olarak Visual Studio ve Expression Blend için design-time desteği de bulunmakta.Ücretsiz Ribbon kontrolünü  buradan indirebilirsiniz.Kolay gelsin.

 

WPF Browser Uygulamalarında Referans Site Bulma

Ağustos 04
by Abdurrahman Köken 4. Ağustos 2010 12:40

Bu yazımda kısaca bir WPF Browser uygulamasında o an bulunulan sayfaya hangi sayfadan gelindiğini nasıl öğrenebileceğimizden bahsetmek istiyorum.Özetle yapmamız gerekenler öncelikle uygulamamızdaki ilk sayfadan sonraki sayfaya gitmemiz navigasyon yapmamız gerekiyor.Daha sonra diğer sayfaya yönlenmeden önce  navigasyon yapılan sayfanın adresi alınarak bir property sayesinde enkapsüle edilmiştir.İşte bu property’yi de her sayfadan ulaşabilmek için App.xaml.cs de tanımlamalıyız.Kaynak kodlar ise oldukça basit ve anlaşılırdır:

 

App.xaml.cs   

public partial class App : Application   

{       

private static Uri referrer;

   //Gelinen sayfanın ismini tutan propoperty.       

public static Uri Referrer        

{   

get{return referrer;}       

}        

//Bir adrese navigasyon yapılırkenki durumu yakalayarak adresi alıyoruz.       

protected override void OnNavigating(NavigatingCancelEventArgs e)       

{           

 base.OnNavigating(e);            

 referrer = null;           

 if (e.Navigator is NavigationWindow)           

  {               

      referrer = ((NavigationWindow)e.Navigator).CurrentSource;

  }           

 else if (e.Navigator is Frame)           

  {               

     referrer = ((Frame)e.Navigator).CurrentSource;           

   } }       

protected override void OnNavigationStopped(NavigationEventArgs e)       

{           

  base.OnNavigationStopped(e);           

  referrer = null;       

} 

}

Page2 sayfasına yönlenmek için Page1 sayfamıza bir düğme yerleştirerek Click olayına  tek satırlık bir kod yazmamız gerekli:

Page1.xaml

private void Button_Click(object sender, RoutedEventArgs e)       

{           

   //Navigation servis kullanılarak Page2 isimli sayfaya yönlendiriliyor.           

  this.NavigationService.Navigate(new Uri("Page2.xaml", UriKind.Relative));       

}

Son olarak Page2.xaml sayfamıza bir etiket yerleştirerek hangi  sayfadan yönlendirilidğini yazdırmak için sayfamızın Load olayına:

Page2.xaml

txtRefered.Text = "Gelinilen sayfa:" + App.Referrer.OriginalString;

Kolay gelsin. 

Kaynak kod.zip (35,65 kb)

Visual Studio 2010 Türkçe Dil Paketi Yayınlandı

Temmuz 06
by Abdurrahman Köken 6. Temmuz 2010 01:02

 

Herkese merhabalar,

Birkaç gün önce Visual Studio 2010 için Türkçe dil paketi yayınlandı.Bu dil paketi şu an için sadece Visual Studio 2010 Professional’ın  İngilizce sürümünün üzerine yüklenebilen bir eklentidir.Eklenti yüklendikten sonra ingilizce ve türkçe dil seçimini yapabilmeniz mümkün.Bu dil paketinin diğer bir özelliği ise İstanbul Teknik Üniversitesi iş birliği ile hazırlanmış olmasıdır.Ayrıntılı bilgi ve indirme için burayı ziyaret edebilirsiniz.

Kolay gelsin.

 

WPF-Attached Property Nedir?

Temmuz 04
by Abdurrahman Köken 4. Temmuz 2010 21:18

Sıradan property’lerin yanı sıra XAML,pek çok kontrolün uygulayabildiği fakat farklı bir sınıfta tanımlanan attached property adında bir konsepti de içerisinde barındırmaktadır. WPF uygulamalarında attached property’ler daha çok kontrollerin düzeni(layout)  için kullanılmaktadır.

Nasıl Çalışır?

Her kontrolün kendine has belirli property kümesi vardır.Örneğin bir textbox’ın fontu,metin rengi ve text içeriği gibi özellikleri vardır.Bu özellikler FontFamily,Foreground ve Text gibi propertyler tarafından set edilebilmektedir.Bunun yanı sıra bir kontrolü bir konteynırın içine yerleştirdiğimizde, kontrol konteynırın tipine bağlı olarak ek özellikler kazanır.Örneğin bir textbox’ı bir Canvas’ın içerisini yerleştirdiğimizde sol üst noktaya göre pozisyonunu ayarlayabiliyor olmalıyız.Bu ekstra detaylar attached property ‘ler kullanılarak ayarlanabilmektedir.

Attached property’ler isimlendirilmesi daima  DefiningType.PropertyName şeklinde iki kısımdan oluşur.Bu ikili isimlendirme sözdizimi XAML Parser’ın  normal property’ler ile attached property’leri ayırt etmesini sağlar.

<Canvas> 

<TextBox Canvas.Top="10"/> 

<TextBox Canvas.Top="40"/> 

<TextBox Canvas.Top="70"/>

</Canvas> 

Attached property’ler aslında gerçek property değildirler.Onlar özünde method çağrımlarına çevrilmişlerdir.XAML parser DefiningType.SetPropertyName() formundaki static bir metodu çağırır.Örneğin yukarıdaki kodumuzda DefiningType Canvas,Property’miz  de Top olduğu için xaml parser Canvas.SetTop() metodunu çağırır.

SetPropertyName()’i çağırırken xaml parser iki parametre geçirir:düzenlenen nesne ve belirlenen property değeridir.Örneğin textbox kontrolünde Canvas.Left özelliğini set ettiğimizde parser şu kodu çalıştırır:

Canvas.SetLeft(txtBox1,10);

Burada soldan uzaklık aslında uygulanan nesne üzerinde saklanmaktadır.Bu durumda property değer TextBox üzerinde saklanmaktadır.Çünkü tüm WPF kontrolleri gibi TextBox kontrolü de DependencyObject temel sınıfından türemiştir.Bilindiği gibi DependencyObject, dependency property’lerin sınırsız bir koleksiyonunu saklamak için tasarlanmıştır.Attached property’ler de dependency property’lerin özel bir tipidir.Belirtmem gereken bir husus da şudur.Aslında Canvas.SetLeft() metodu DependencyObject.SetValue() metodunun bir kısayoludur.Örneğin:

txtBox1.SetValue(Canvas.LeftProperty,10);

Attached property’ler WPF’in çekirdek bileşenleridir.Çok amaçlı genişletilebilir bir sistem gibi davranırlar.Örneğin Left property’sini attached property olarak tanımlayarak,bu property’nin herhangi bir kontrol ile kullanılabilmesini sağlamakla beraber esnek bir yapı oluşturmuş oluruz.

Kolay gelsin.  

WPF-Binding Modlar

Temmuz 04
by Abdurrahman Köken 4. Temmuz 2010 01:37

Bu yazımda data binding işlemlerinde kullanılan binding modlar hakkında bilgi vermek istiyorum.Binding modları kullanarak kaynak ile hedef arasındaki veri akışını kontrol edebiliriz.Özellikle bazı durumlarda verilerimizin kaynaktan hedefe gibi tek yönlü akmasını isteriz.Aşağıdaki tabloda binding modların bir listesini ve hangi modun ne işe yaradığını bulabilirsiniz.

 

OneWay

OneWay mod tablodaki açıklamada da belirtildiği gibi tek yönlü bir veri akışı söz konusudur.Bu akış da kaynaktan hedefe doğrudur.Kaynak property de herhangi bir değişiklik olduğunda bu değişiklik hedef property eye de yansımaktadır.

TwoWay

En sık kullanılan modlardan birisidir.OneWay moda ek olarak  hedeften kaynağa veri akışı da sağlamaktadır.

OneTime

OneTime mod ise aslında bazı yerlerde çok kullanışlı olabilmektedir.Bu mod ile kaynaktan hedefe doğru sadece bir kez binding işlemi söz konusudur.

OneWayToSource

İsminden de anlaşılacağı gibi OneWay modun tam tersi işlemi yerine getirmektedir.Hedef property de  olan bir değişiklik kaynağa yansıtılmaktadır.

<TextBox x:Name="txtSource"/>

<TextBox Text="{Binding ElementName=txtName,Path=Text,Mode=OneWay}"/> 

Yukarıdaki kodda binding modların kullanılışını gösteren bir örnek bulunmaktadır.Buradaki kodda dikkat ederseniz OneWay  mod kullanılmış.Yani üstteki TextBox’a girilen metnin aynısı binding işlemleri sayesinde alttaki TextBox’ta da görülecektir.Fakat alttaki kutucukta yapılan değişiklik kaynak TextBox’ın Text property’sinde herhangi bir değişikliğe sebep olmayacaktır. Aşağıdaki şekilde kolay bir şekilde modlar arasındaki farkları görebilirsiniz.

   

Kod Tarafında Binding İşlemi 

Binding binding = new Binding();

binding.Source = txtSource;

binding.Path = new PropertyPath("Text");

binding.Mode = BindingMode.OneWay;

txtTarget.SetBinding(TextBlock.TextProperty, binding);

Yukarıda bahsettiğim modlar arasındaki farkı daha iyi anlamanız için yukarıdaki örnek kodun modlarını değiştirmenizi tavsiye ederim.

Hepinize kolay gelsin.

 

Abdurrahman Köken-Recent Post