SORU
26 ŞUBAT 2010, Cuma


WPF:, ...otomatik tamamlama Metin kutusu tekrar

This other SO question WPF otomatik tamamlama bir textbox soruyor. Birkaç kişi bu yerleşik ve cevabı orada verilmiş olan ... this codeproject article öneriyor.

Ama Win otomatik tamamlama metin kutusu ile karşılaştıran herhangi bir WPF otomatik tamamlama Metin kutusu buldum. Codeproject örnek çalışmalar, bir bakıma, ...

alt text

...ama

  • yeniden kullanılabilir kontrol veya bir DLL olarak yapılandırılmış değil. Her uygulamada gömmek için gereken kod.
  • Sadece dizinleri ile çalışır. otomatik tamamlama kaynak dosya sistemi dizinleri sadece olup olmadığını, ya da dosya sistemi dosyaları için ayar özellikleri yok ya ....vb. Kod bu, tabii ki bunu yazabilirim, ama...yerine başkasının kod zaten yazılı kullanırdım.
  • açılan boyut, vb ayarlamak için özelliklere sahip değil.
  • doktorunun tamamlamaları sunan açılan bir liste kutusu var. Bu liste içinde gezinirken, metin değişmez. Listbox yoğunlaşmışken bir karakter yazarak textbox güncel olsun neden olmaz.
  • listbox uzak odak gezinme açılır liste de yok etmez. Bu kafa karıştırıcı.

Yani, benim soru:

*Herkesin ÜCRETSİZ WPF otomatik tamamlama bir textbox varo çalışırve sağlar kaliteli bir kullanıcı arabirimi deneyimi*?


CEVAP

Yaptım işte nasıl:

.0. WPF Toolkit olsun

.1. WPF Toolkit için MSI çalıştırın

.2. Visual Studio içinde,/UI Tasarımcısı araç - özellikle Veri Görselleştirme grubu - damla Sürükleyin. VS araç bu gibi görünüyor:

alt text

Eğer tasarımcı kullanmak istemiyorsanız eğer, el-zanaat xaml. Bu gibi görünüyor:


<toolkit:AutoCompleteBox
   ToolTip="Enter the path of an assembly."
   x:Name="tbAssembly" Height="27" Width="102"
   Populating="tbAssembly_Populating" />

araç ad bu şekilde eşleştirilmiş...:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"

.3. Populating etkinlik için bir kod sağlar. Kullandığım şey şu:


private void tbAssembly_Populating(object sender, System.Windows.Controls.PopulatingEventArgs e)
{
    string text = tbAssembly.Text;
    string dirname = Path.GetDirectoryName(text);

    if (Directory.Exists(Path.GetDirectoryName(dirname)))
    {
        string[] files = Directory.GetFiles(dirname, "*.*", SearchOption.TopDirectoryOnly);
        string[] dirs = Directory.GetDirectories(dirname, "*.*", SearchOption.TopDirectoryOnly);
        var candidates = new List<string>();

        Array.ForEach(new String[][] { files, dirs }, (x) =>
            Array.ForEach(x, (y) =>
                      {
                          if (y.StartsWith(dirname, StringComparison.CurrentCultureIgnoreCase))
                              candidates.Add(y);
                      }));

        tbAssembly.ItemsSource = candidates;
        tbAssembly.PopulateComplete();
    }
}

Tam da sizin beklediğiniz gibi çalışır. Profesyonel hissettiriyor. Bu codeproject sergiler kontrol eden anomaliler yok. Bu gibi görünür:

alt text


WPF toolkit Thanks to Matt for the pointer.

CEVAP
26 ŞUBAT 2010, Cuma


WPF Toolkit yeni açılan bir AutoCompleteBox içerir. Dahil edilecek bazı Microsoft, denetimleri ücretsiz bir set .NET 4.

Jeff Wilcox - Introducing the AutoCompleteBox

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • MndsgnVEVO

    MndsgnVEVO

    26 Kasım 2013
  • Press Start

    Press Start

    4 HAZİRAN 2006