Saltar al contenido

WPF: Autocompletar TextBox, … de nuevo

Solución:

La última versión del kit de herramientas de WPF incluye un AutoCompleteBox. Es un conjunto gratuito de controles de Microsoft, algunos de los cuales se incluirán en .NET 4.

Jeff Wilcox – Presentamos AutoCompleteBox

Así es como lo hice:

.1. ejecutar MSI para el kit de herramientas de WPF

.2. Dentro de Visual Studio, arrastre / suelte desde la caja de herramientas, específicamente el grupo Visualización de datos, en el Diseñador de interfaz de usuario. Se ve así en la caja de herramientas de VS:

texto alternativo

O crea a mano el xaml. Se parece a esto:


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

… donde el espacio de nombres del kit de herramientas se asigna de esta manera:

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

.3. Proporcione el código para Populating evento. Esto es lo que usé:


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();
    }
}

Gracias a Matt por el puntero al kit de herramientas de WPF.

Utilizo Intellibox en mi proyecto interno. http://intellibox.codeplex.com/

Encuentro que su uso del patrón Proveedor para realizar búsquedas es muy intuitivo.

La respuesta de Rake proporciona un ejemplo de cómo usarlo y, como señala, ha experimentado cierto desarrollo a fines del año pasado (aunque esto es mucho después de que lo usé por última vez).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *