ben

OMÜ , Bilgisayar Mühendisliği, 13'

25 Ocak 2013 Cuma

AutoComplete

Windows Form Uygulaması
     AutoComplete, visual studio da windows Formda bulunan textbox controlünün bir özelliği. bu özellik textboxın combobox gibi kullanılabilmesini sağlar. textbox' a girdiğiniz ilk karakterlere göre onceden tanımlı listede en uygunu textboxda yazılı ve seçili hale gelmesini sağlar. Aynı özellik Wpf uygulamalarındaki textbox 'larda bulunmuyor . Bunun için de bir çözüm var elbette yazının ileriki kısımlarında bahsetmeye çalısacağım. Windows Form da uygulama yaparak anlatmaya çalısalım.



     Yukarıdaki forma yerleştirdiğimiz textbox' ın özelliklerinden AutoCompleteMode özelliğine aşağıdaki atamaları tanımlayalım.
AutoCompleteMode:
*Varsayılan olarak None değerini içerir
*Append, yazılan harflere uyan ilk kelimenin kalanını textbox’a ekler ve seçili hale getirir.
*Suggest, aşağı açılan listeyi gösterir.
*SuggestAppend, hem aşağı açılan listeyi gösterir, hem de yazılan harflere uyan ilk kelimenin kalanını textbox’a ekler ve seçili hale getirir.

      AutoCompleteCustomSource:AutoCompleteSource özelliği CustomSource olarak atanmışsa AutoCompleteCustomSource özelliği string dizisi olarak listeyi tutar.

       Form'un Load olayında, textbox'ımızın AutoCompleteMode ve AutoCompleteCustomSource özelliklerine değer atamaları yapalım;

txtsehir.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
txtsehir.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtsehir.AutoCompleteCustomSource.AddRange(new string[] { "İstanbul", "Ankara", "İzmir", "Sivas", "Samsun", "Çankırı" });

Ekran Çıktısı:



Wpf Uygulaması

    Yukarıdada belirttiğim gibi textbox ın kendinde AutoComplete özelliği bulunmuyor. Bunun için bazı kütüphaneleri projemizin referance kısmına eklememiz gerekmektedir

*System.Windows.Controls.Input.Toolkit.dll
*WPFToolkit.dll
    Bu kütüphanelere buradan ulaşabilirsiniz.Wpf xaml dosyasına aşağıdaki tanımlamayı eklememiz gerekmektedir.
xmlns:controls="clrnamespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
xaml deki Grid tagları arasına aşağıdaki kodu yazalım;

<controls:AutoCompleteBox IsTextCompletionEnabled="True" Text="{Binding Path= kelime}" ItemsSource="{Binding Path=liste,Mode=TwoWay}" x:Name="deneme" Height="27" Populating="tbAssembly_Populating_1" Margin="49,61,133,223" >
</controls:AutoCompleteBox>


xaml.cs dosyasında olusan populating olayına ise aşağıdaki tanımlamaları yapalım.

List<string> son= new List<string>();
private void tbAssembly_Populating_1(object sender, PopulatingEventArgs e)
{
     string text = deneme.Text;
     son.Add("İstanbul");
     son.Add("Ankara");
     son.Add("İzmir");
     son.Add("Sivas");
     son.Add("Samsun");
     son.Add("Çankırı"); deneme.ItemsSource = son;
}

Wpf de Simple Mvvm yapısı kullanıyorsak ;

ViewModel kısmında propertiesi tanımlıyoruz;

private ObservableCollection<string> _autoListe;
public ObservableCollection<string> AutoListe

{ get { return _autoListe; }
set
{
      _autoListe = value;
       NotifyPropertyChanged(m => m.AutoListe);

 }

     Method kısmında ise sayfanın load methodunun içine yukarıdaki gibi şehir isimlerini tanımlayabiliriz.

AutoListe.Add("İstanbul");

Hiç yorum yok: