Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

.NET Framework / Wpf Autocomplete Textbox

Mr.Onur

Fahri Üye
Fahri Üye
Fenerbahçe
Katılım
3 Şubat 2014
Mesajlar
1,744
Tepkime puanı
0
Puanları
0
Uygulamalarda bir şey ararken bazen ne arayacağımızı tam olarak bilmeyiz ya da aradığımız şeyin tüm adını hatırlayamayız. Bu nedenle artık sistemler kullanıcılara kolaylık sağlamak amacıyla, kullanıcı arama yapmak için bir şeyler yazarken o yazdığı textle başlayan ya da o texti içeren verileri, yazdığımız controlün altında listeler. Bunun en basti örneğini google.com.tr sitesinde görebiliriz.

Sizlere autocomplete denen bu özelliği wpf textboxta nasıl uygulayacağımızı anlatmaya çalışacağız.
Xaml



1Usercontrolümüzün içinde bir tane stackpanel ve stackpanelin içinde de bir tane textbox ve popup controlleri


2bulunmaktadır. Textbox controlünü arama yapacağımız texti yazmak için pop up ve pop up controlün içindeki


3listbox controlünü de arama sonuçlarını listelemek için kullanacağız.




Cs



Kullanıcının autocompletetextbox usercontrolü içinde yer alan textbox kontrolünde yaptığı her değişikliği dışarıya bilgilendirmek için TextChangedEventHandler tipinde bir event tanımladık. ItemsSource propertisi ise usercontrolün kullanıldığı yerde arama sonucunda elde edilen sonuçları autocompletetextbox usercontrolü içinde yer alan listbox kontrolde listelenmesini sağlamak amacıyla public olarak belirtiyoruz.



ListBox_MouseLeftButtonUp event handlerı kullanıcının, arama sonuçlarının listelendiği listboxtan seçtiği itemın textinin, textboxa yazılmasını sağlamak için implement edilmiştir. Kullanıcının listeden seçtiği item direk olarak ListBoxItem tipinde olmadğı için, bu tipteki değişkeni bulana kadar seçilen itemın parentından başlayarak yukarıya doğru aramaya devam ediyoruz.
Usercontrolün load eventinde popup controlün boyutlarını ayarladıktan sonra, autocompletetextbox controlün yer aldığı windowu bulup, bu window kullanıcı tarafından mousela taşındığı zaman popup controlü kapatmak için LocationChanged eventini dinliyoruz.



Usercontrolün textboxında yapılan değişiklikleri TextBox_TextChanged eventhanlerı ile TextChangedEventHandler event değişkeni ile dışarıya açıp, dışarda ilgili mantığın işletilmesini sağlıyoruz.
SetTextBoxText fonksiyonu içinde ise textbox kontrolünün textini kod içinden değiştiriyoruz. Kod içinden textbox kontrolün textini değiştirmeden önce textbox kontrolün TextChanged eventine düşmemek için önce detach olup, textte değişiklik yaptıktan sonra tekrar eventa attach oluyoruz.
Mainwindow cs





Uygulamada windowa bir tane autocompletetextbox controlümüzden koyuyoruz ve bu controlümüzün TextChangedEventHandler eventini dinleyerek iş mantığını gerçekleştiriyoruz. Bu iş mantığının içinde gördüğünüz gibi ülkemizdeki şehirlerin adlarının tutulduğu bir listeden, kullanıcının girdiği texte bakıp arama yaparak dönen sonucu autocompletetextbox controlümüzün ItemsSource porpertisine atayarak sonuçların autocompletetextbox controlümüzün listboxında görüntülenmesini sağlıyoruz.
 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst