27 Temmuz 2010 Salı

WPF uygulamalarında drag&drop işlemleri.

wpf uygulamalarında kullanılan ozelliklerinden bırıdır surukle bırak ıslemleri. bu ornekte bir textbox içerisindekı bilgileri baska bir textbox ıcerisine surukleyıp bırakacagız.bu ıslemlede bircok event kullanılmakta.

Öncelikle surukleme yapılacak textbox ın mousedown event ozelligi kullanılmakta.kodlar:

C#kodları
private void TextBox_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Label lbl = (Label)sender;
            DragDrop.DoDragDrop(lbl,lbl.Content, DragDropEffects.Copy);
        }
daha sonra bırakcagımız textboxın textdrop event ayarlamalar yapılmalı.ornegın kopyalanacak veri string dısında baska bir veriyse kopyalama yapılmayacagından surukleme ıslemını engellemek uzere mouse imlecini degiştirdik. kodlar ise sekıldeki gibi
C#

private void text_Drop(object sender, DragEventArgs e)
        {
             if (e.Data.GetDataPresent(DataFormats.Text))
                e.Effects = DragDropEffects.Copy;
            else
                e.Effects = DragDropEffects.None;
        }
ayrıca xmal dosyasının icerigide sekıldeki olmalı eventlar xmal dosyasınada eklenmelidir.
:

XMAL kodları:

26 Temmuz 2010 Pazartesi

Wpf uygulamalarında event kullanımı

wpf uygulamalarında fark ettım vede kullanıslı olabılecek bi kac event ornegı vermek istıyorum.

ornegin text boxa sadece sayı gırısını saglamak için yapılması gerekenler:

textboxın PreviewTextInput evetın asagıdakı kodlar yazarsak text box icerisine sadece sayı gırısını saglamıs oluruz.  

C# kodları
private void PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            int val;
            if (!(int.TryParse(e.Text, out val)))
            {
                e.Handled = true;
            }
        }
bu eventta text boxa gırılen deger int.tryparse fonksıyonu ile eger int degere cevriliosa textbox içerisine sayı girisine izin veriyor. bunun dısında baska bı deger girilemez.

baska bir event bahsedecek olursak mesela text box içerisinde bosluk bırakılması ıstenmıyorsa oda;

text boxın baska bir eventın kullancaz PreviewKeyDown eventına asagıdakı kodlar yazıldıgı takdirde text box ıcerıgıne bosluk girilmesi yada baska herhangı bir tusun gırılmesı engellenebilir.
C#kodları
private void PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key==Key.Space)
            {
                e.Handled = true;   
            }
        }
movesmove event ilede mouse bulundugu koordınatları belirliyebılırız .örnegin:

C#
private void MouseMove(object sender, MouseEventArgs e)
        {
            Point pt = e.GetPosition(this);
            label1.Content = string.Format("you are at here {0},{1}", pt.X, pt.Y);
        }

WPF xaml kullanarak basit bir uygulama

bu yazıda wpf ile cok basit bir ornek yapcam sadece layout araclarını kullanrak bir uygulama yaptım.
bu uygulamada wpf ait olan 2 layout kullanacz  dockpanel ve stackpanel.

xaml kodları

 

Gorunumu ise:
            
















uygulamada kullanılan  ozellikleri kısaca acıklarsak 1 tane dock panelin içine 2 tane stack panel koyduk.dockpanelin  dockpanel.bottom ve dockpanel.top ozeliklerini kullanarak bir stack panelin yukarda dıerininde asagıda kalmasını sagladık.           
  2.stack panelde orientation ozellıgı stackpanele konulan ogelerin yanyana yada altalt kullanılması saglar.biz burda horizontal yaparak buttonları yan yana dızdık.Ayrıca margin="2,10,10,2" seklinde ayarlanıyor. buda bize ogenın soldan 2 ustten 10 sag 10alttan 2  pixel bosluk bırakmamızı saglıyor.                                            

20 Temmuz 2010 Salı

XAML nedir?

Daha onceki yazıada bahsetmiş oldugum wpf uygulamlarında kullanılan xaml uzantılı dosyalarının kullanım amacları ve sundugu yenılıklerden bahsetmek ıstıyorum.

XAML (Extensible Application Markup Language) aynı xml gibidir ve xml butun ozelliklerini kullanabılır.
Xaml Wpf uygulamaların arayuzlerınde,Silverlight, WF(Workflow Foundation) akıs semalarında ve elektronik sayfa olarak XPS(Xml Paper Specification) kullannılmkata.

XAML Kullanmanın Yararları

Xaml le yapılacak herseyı kodlarlada yapılırız.Xaml sadece nesneleri farklı bir yolla tanımla imkanı sunuyor.Wpf uygulamalarında Xaml kullanmadan da yapılabilir.baslıca yararları ise soyle:

Xaml kodları gayet kısa ve anlasır sekıldedir.
Uygulamanın tasarım kısmı ile yazılım kısmını ayırıyor.bu ozelligide tasarımcıyla yazılımcı arasındakı ilişkiyi ayırıyor.

Daha onceden dedıgım gıbı xaml ile yapılacak herseyi kodlada yapabilirdik. fakat kodla yapmamımız zahmetli oluyor ornek  verecek olursam.bir stack panellin içine bir buton ve bir text box olusturup atalım.

XAML Kodları

     
       
C# Kodları

 StackPanel stack = new StackPanel();
            this.Content = stack;

            TextBox text = new TextBox();
            text.Margin = new Thickness(10);
            text.Height = 20;
            text.Width = 60;
            stack.Children.Add(text);

            Button btn = new Button();
            btn.Height = 20;
            btn.Width = 50;
            btn.Content = "Tıklayın";
            stack.Children.Add(btn);
goruldugu gibi xaml kullanmak ekstra kod yazmaktan kurtarıyor.


XAML Namespace
  Her XAML dosyasının basında 2 tane namespace vardır.
birincisi: http://schemas.microsoft.com/winfx/2006/xaml/presentation. System.Windows.Control  icinde bulunan wpf kontrollerini kullanmamızı saglıyor.
ikincisi:http://schemas.microsoft.com/winfx/2006/xaml
System.Windows.Markup bulunan xaml keywordlerini kullanmamızı saglıyor.

19 Temmuz 2010 Pazartesi

WPF (Windows Presentation Foundation) nedir?

Son gunlerde heryerde karsıma cıkan wpf kısaltmasının ne oldugunu merak edip arastırdım.ne oldugu neye işe yaradıgını nerelerde kullanıldıgını ogrenmek istedim.biraz arastırma yaptıktan sonra gayet guzel ve hayırlı :)  birsey oldugunu ogrendım.Fakat bu konuyu arastırırken buldugum kaynaklar yenı baslayan bırı ıcın pek anlasılır deildi. bu yuzden ben ogrendıklerımı en basıt sekılde anlatmak istiyorum.

bu Teknoloji yenı yenı kullanılmaya baslandı framework 3.0 la gelen bır yenilik.Bu yuzden yapılacak olan calısmalarda framework 3.0 ve ustu yuklu olması gerekiyor.

WPF teknolojisi yapılacak projelerde gorsel ozellik kazandırması saglıyor.Bu teknolojiden oncede gorsel ozellik kazandırmak ekstradan cok kod yazmak gerekiyordu.Bu teknolojıyle ekstra kod yazmadan  2D,3D animasyonlar ve arabirimleri yapmak eski klasik GDI(Graphic Device Interface)' dan çok daha pratik ve performanslı.Normal windows yazılımları şu anda klasik olarak grafikler için GDI kullanıyor ve GDI da bu işlemler için CPU yu kullanıyor.Fakat WPF GPU(Graphics Processing Unit) kullanılıyor.bu ıkısı arasındakı farkı anlatacak olursam eskiden oyun oynarken oyundakı tum grafiksel bilgiler cpu tarafından ıslenıyordu bu da cpu'ya asırı bir yuk bındırıyor ve asırı ısınması neden oluyordu.GPUda ise ekran kartların ustune yerlestırelen işlemcilerle cpu yuk bındırmeden grafiksel işlemler yapılıyor.

     Bu teknolojiyle yuzlerce dolarlara alınan ekran kartlarının işe yarar hale getiriyor.Fakat kullanıcıda iyi bir ekran kartı olmasa bıle eski modda calısmaya devam ediyor.

Wpf uygulaması olusturdugumuzda XAML( Extensible Application Markup Language)  ve .xaml.cs uzantılı dosyalar olusmakta.uygulamanın gorunusu ıle ılgılı bolum XAML dosyasında davranıs ozellikleri ise c# yada visual basic olarak diger dosyada tutulur.Bu ıkı kısım bırbırlerıyle Databındıng,event ve komutlarla bırbırıne baglanır.

Ayrıca wpf uygulamaları grafiksel olrak vektorel grafikler iceriyor.Yani yapılan uygulama herhangi bir buyutme yada kucultme sonucunda gorsel olarak bozukluk meydana gelmez.

Wpf ıle yapılmıs uygulamaları sonraki yazılarda yazmaya calısacam. Zaman ayırıp okudugunuz ıcın tesekurler.

Sql de Like Kullanımı

Sql de sorgu yaparken bazı zamanlarda karakter karsılastırması yapmak gerekebilir. bu durumlarda like kullanarak sorgu yapmak gerekebilir.ornegın isimlerin bulundugu bı tabloda a harfiyle baslayan isimleri bulmak gibi yada web sitelerinde bulunan arama yap bolumu oraya girdiginiz herhangi bir ifadeyi iceren veritabanında bulunan butun bılgıleri getrıyor.iste bu ozellik 'LIKE' sozcuguyle yapılabilir.

ornegin:
                       Select ad from kisiler where ad like 'A%';

seklinde bır sorgu kisiler tablosundaki adı a ile baslayan kisilerin adlarını getirmekte.

Like deyimi ile kullanılan deyimler bize sorgu yaparken kolaylık saglamaktadır.

karakterleri acıklayacak olursak:

LIKE '%A%': icerinde  A harfi bulunduran kayıtlar.
LIKE 'A%' : a ile baslayan tum kayıtlar.
LIKE '_A%': 2.harfi a ile baslayan kayıtlar.
LIKE  '_[ABCD]%' : 2. harfiA yada B yadaC yada D olan kayıtlar.
LIKE   '_[^DEF] % ' : 2.hari D yada E yada F olmayan kayıtlar.

sekilde kullanarak ıstedıgımız sorguyu yapabılıyoruz.Ayrıca like deyiminde sorgulama "=" kulanmadan yapılmaktadır.

Asp.net Literal kullanımı

Asp.net kontrollerine sole bı bakarken literal kontrolunu gordum ismi cok karizmatik ama ne işe yaradıgınadair bi fikrim yoktu.biraz arastırdıktan sonra ne işe yaradıgını anladım ve ogrendıklerımı burda paylasmak istedim.

literal kullanımı label kullanımı ile neredeyse aynıdır.aralarındaki fark ise label yazdıgımız textleri html cıktısında span taglarının arasını alır literal o olzellik yok.

ornegin literal properties ozelliginden mode ozelligini ' encode ' yaparsak literala yazdıgımız html kodları aynı sekılde gorunur.




 cıktısı :


 seklindedir.