WPF: zone de texte de saisie semi-automatique, ...encore une fois
Cette autre DONC, la question pose des questions sur une zone de texte de saisie semi-automatique dans WPF. Plusieurs personnes ont construit ces, et l'une des réponses données suggèrent cette codeproject article.
Mais je n'en ai pas trouvé WPF zone de texte de saisie semi-automatique, ce qui se compare avec les WinForms zone de texte de saisie semi-automatique. Le codeproject exemple fonctionne, en quelque sorte, ...
...mais
- il n'est pas structuré comme un re-utilisable de contrôle ou de la DLL. C'est du code que j'ai besoin d'incorporer dans chaque application.
- Il fonctionne uniquement avec les répertoires. il ne possède pas de propriétés pour définir si la saisie semi-automatique de la source à un système de fichiers répertoires, ou système de fichiers fichiers, ou......etc. Je pourrais écrire le code pour faire cela, bien sûr, mais...je préfère utiliser un autre code déjà écrit.
- il ne possède pas de propriétés pour définir la taille de fenêtre contextuelle, etc.
- il y a une fenêtre de zone de liste qui présente les complétions possibles. Lors de la navigation par le biais de cette liste, la zone de texte ne change pas. En tapant un caractère tout concentré dans la zone de liste ne cause pas de la zone de texte pour le mettre à jour.
- la navigation se concentrer loin de la zone de liste ne pas faire la popup listbox disparaître. Ceci est source de confusion.
Donc, ma question:
*Quelqu'un aurait-il une GRATUIT WPF zone de texte de saisie semi-automatique qui fonctionne, et fournit une INTERFACE utilisateur de qualité de l'expérience?*
RÉPONSE
Voici comment je l'ai fait:
.0. obtenir le WPF Toolkit
.1. exécutez le fichier MSI pour le WPF Toolkit
.2. Dans Visual Studio, faites-le Glisser/déposer à partir de la boîte à outils - plus précisément, la Visualisation des Données de groupe dans le Concepteur d'INTERFACE utilisateur. Il ressemble à ceci dans le VS boîte à outils:
Si vous ne souhaitez pas utiliser le concepteur de la main, de l'artisanat le code xaml. Il ressemble à ceci:
<toolkit:AutoCompleteBox
ToolTip="Enter the path of an assembly."
x:Name="tbAssembly" Height="27" Width="102"
Populating="tbAssembly_Populating" />
...où la boîte à outils de l'espace de noms est mappé de cette façon:
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
.3. Fournir le code pour le Populating
événement. Voici ce que j'ai utilisé:
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();
}
}
Il fonctionne, juste la façon dont vous vous attendez. Il se sent professionnel. Il y a aucun des anomalies que les codeproject de contrôle des expositions. C'est à quoi il ressemble:
Merci à Matt pour le pointeur à la WPF toolkit.
Vous devez vous connecter pour publier un commentaire.
La dernière goutte de la WPF Toolkit comprend un AutoCompleteBox. C'est un jeu gratuit de contrôles de la part de Microsoft, dont certains seront inclus dans .NET 4.
Jeff Wilcox - l'Introduction de l'AutoCompleteBox
Voici comment je l'ai fait:
.1. exécutez le fichier MSI pour le WPF Toolkit
.2. Dans Visual Studio, faites-le Glisser/déposer à partir de la boîte à outils - plus précisément, la Visualisation des Données de groupe dans le Concepteur d'INTERFACE utilisateur. Il ressemble à ceci dans le VS boîte à outils:
Ou à la main, de l'artisanat le code xaml. Il ressemble à ceci:
...où la boîte à outils de l'espace de noms est mappé de cette façon:
.3. Fournir le code pour le
Populating
événement. Voici ce que j'ai utilisé:Merci à Matt pour le pointeur de la WPF toolkit.
Mindscape propose également un 3 sans contrôles y compris un WPF zone de texte de saisie semi-automatique
http://intellibox.codeplex.com/ ne semble pas mis à jour récemment, en octobre 1, 2013 et contient le seul contrôle. J'aurais ajouté comme commentaire sur Troy réponse, mais n'ont pas assez de rep. J'ai presque ignorée à cause de ce commentaire.
Exemple d'utilisation de la documentation:
- Je utiliser l'Intellibox dans mon projet en interne. http://intellibox.codeplex.com/
Je trouve que c'est l'utilisation du Fournisseur de modèle pour la recherche très intuitif.
Râteau de répondre, en fournit un exemple de comment l'utiliser, et comme il le souligne, il a connu un certain développement en fin d'année dernière (même si c'est bien après que j'ai utilisé la dernière fois).
Vous pouvez essayer de WPF Automatique de zone de texte sur CodePlex ici: https://wpfautocomplete.codeplex.com/