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 * /

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top