Domanda

Sto avendo difficoltà a raggiungere la casella di completamento automatico in System.Windows.Controls.Input di lavoro come vorrei. Quando inizio a digitare la sezione a discesa che visualizza l'elenco filtrato non mostra la proprietà che sto legame, mostra il nome della classe, invece.

Quindi, nell'esempio qui sotto, quando digito nel mio - invece di mostrare 'My Name' si vede MyNamespace.Person. Tuttavia, quando si seleziona la voce dalla lista di completamento automatico, visualizza la proprietà FullName nella casella di testo. Sono sicuro che mi manca solo un semplice completamento automatico proprietà scatola da qualche parte ma non riesco a vederlo.

Esempio di codice:

public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName
        {
            get { return string.Format("{0} {1}", FirstName, LastName); }
        }
    }

Nel mio codice XAML dietro creo oggetti una persona e memorizzarli in una lista e si legano tale elenco per una casella di completamento automatico

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;

Il mio XAML:

<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />

/ * dopo aver inserito il 'mio', auto display completi 'MyNamespace.Person' invece di 'My Name', ma visualizza 'My Name' dopo aver selezionato la voce dalla lista * /

È stato utile?

Soluzione

Si scopre che ho bisogno di usare un ItemTemplate per la parte a discesa della AutoCompleteBox, in modo che il XAML per ora sarebbe come segue:

<my:AutoCompleteBox Name="acbNames" ValueMemberBinding="{Binding FullName}">
            <my:AutoCompleteBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FullName}"/>
                </DataTemplate>
            </my:AutoCompleteBox.ItemTemplate>
        </my:AutoCompleteBox>

Altri suggerimenti

Sì, il problema è stato perché non hai messo modello di elemento. Ma se si mette modello di elemento ed ancora problema ottenuto leggere ciò che Sandro ha wroted.

Ho avuto lo stesso problema. Ho risolto utilizzando una risorsa statica per lo Stile di controllo

Questo è lo stile che ho usato:

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

Se io non uso questo stile la mia voce doganale non vengono visualizzati correttamente come configurare in DataItem, invece mostrare il nome della classe.

Condividi | modifica

Questo funziona anche per me, ma solo quando ho applicato un certo stile tema personalizzato dal toolkit. Ci sono alcune altre soluzioni quando si utilizza il tema da toolkit

Best,

debarisi

Ho avuto lo stesso problema. Ho risolto utilizzando una risorsa statica per lo Stile di controllo

Questo è lo stile che ho usato:

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

Se io non uso questo stile la mia voce doganale non vengono visualizzati correttamente come configurare in DataItem, invece mostrare il nome della classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top