texte AutoCompleteBox dans Silverlight
-
27-09-2019 - |
Question
Je vais avoir du mal à obtenir la boîte de saisie semi-automatique dans le travail System.Windows.Controls.Input que je souhaite. Quand je commence à taper la section déroulante qui affiche la liste filtrée ne montre pas la propriété que je liant à, il indique le nom de la classe à la place.
Ainsi, dans l'exemple ci-dessous, quand je tape dans mon - au lieu de montrer « My Name », il montre MyNamespace.Person. Cependant, lorsque je sélectionne l'élément de la liste de saisie semi-automatique, il affiche la propriété FullName dans la zone de texte. Je suis sûr que je manque juste une boîte de saisie semi-automatique simple, propriété quelque part, mais je ne peux pas le voir.
Exemple de code:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName
{
get { return string.Format("{0} {1}", FirstName, LastName); }
}
}
Dans mon code XAML derrière je crée des objets personne et de les stocker dans une liste et se lient cette liste à une boîte de saisie semi-automatique
List<Person> people = new List<Person>();
people.Add(new Person { FirstName = "My", LastName = "Name" });
people.Add(new Person { FirstName = "Fernando", LastName = "Torres" });
acbNames.ItemsSource = people;
Mon XAML:
<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />
/ * après être entré dans 'mon', auto affiche complet de MyNamespace.Person 'au lieu de 'My Name', mais affiche de Mon nom "après avoir sélectionné l'élément de la liste * /
La solution
Il se trouve que je dois utiliser un ItemTemplate pour la partie déroulante du AutoCompleteBox, de sorte que le XAML serait maintenant comme suit:
<my:AutoCompleteBox Name="acbNames" ValueMemberBinding="{Binding FullName}">
<my:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FullName}"/>
</DataTemplate>
</my:AutoCompleteBox.ItemTemplate>
</my:AutoCompleteBox>
Autres conseils
Oui, votre problème est que vous n'avez pas mis modèle d'élément. Mais si vous mettez modèle d'élément et encore problème obtenu lire ce que Sandro a wroted.
J'ai eu le même problème. Je l'ai résolu en utilisant une ressource statique pour le style de contrôle
Ceci est le style utilisé i:
<Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
<Setter Property="Margin" Value="5,0,5,0"/>
<Setter Property="MinWidth" Value="100"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property ="HorizontalAlignment" Value="Right"/>
</Style>
Si je n'utilise ce style mon article Les douanes affiche pas correctement que je configure dans DataItem, au lieu qu'il affiche le nom de classe.
part | modifier
Cela fonctionne pour moi aussi, mais seulement quand j'appliqué un certain style de thème personnalisé de boîte à outils. Il y a quelques autres solutions de contournement lorsque vous utilisez le thème de boîte à outils
Best,
debarisi
J'ai eu le même problème. Je l'ai résolu en utilisant une ressource statique pour le style de contrôle
Ceci est le style utilisé i:
<Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
<Setter Property="Margin" Value="5,0,5,0"/>
<Setter Property="MinWidth" Value="100"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property ="HorizontalAlignment" Value="Right"/>
</Style>
Si je n'utilise ce style mon article Les douanes affiche pas correctement que je configure dans DataItem, au lieu qu'il affiche le nom de classe.