Frage

Ich habe Probleme bekommen die Autocomplete-Box in System.Windows.Controls.Input Arbeits, wie ich will. Wenn ich die Eingabe des Drop-Down-Abschnitt beginnen, dass zeigt die gefilterte Liste die Eigenschaft nicht zeigen, dass ich die Bindung an, es zeigt den Klassennamen statt.

So im Beispiel unten, wenn ich in meinem geben - anstatt zu zeigen, 'My Namen' es zeigt MyNamespace.Person. Allerdings, wenn ich das Element aus der Autocomplete-Liste auswählen, zeigt es die Fullname-Eigenschaft in der Textbox. Ich bin sicher, ich bin nur eine einfache Box zum automatischen Vervollständigung Eigenschaft irgendwo fehle, aber ich kann es nicht sehen.

Beispielcode:

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

In meinem XAML-Code hinter erstelle ich einige Person Objekte und speichert sie in einer Liste und binden diese Liste auf eine Autovervollständigen-Feld

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;

Meine XAML:

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

/ * nach Eingabe von 'meinem', Auto-Vervollständigen-Displays 'MyNamespace.Person' anstelle von 'My Name', sondern zeigt 'My Name', nachdem das Element aus der Liste auswählen * /

War es hilfreich?

Lösung

Es stellt sich heraus, ich brauche eine ItemTemplate für das Drop-Down-Teil des AutoCompleteBox zu verwenden, so dass die XAML es nun folgt sein würde, wie:

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

Andere Tipps

Ja, Ihr Problem war, weil Sie nicht Elementvorlage gelegt hat. Aber wenn Sie Elementvorlage setzen und noch bekam Problem lesen, was Sandro wroted hat.

hatte ich gleiches Problem. Ich löste es eine statische Ressource für den Control Style mit

Das ist der Stil i verwendet:

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

Wenn ich diesen Stil nicht die Verwendung Zoll Artikel sind nicht richtig, wie ich configure angezeigt in DataItem, stattdessen zeigen sie die Klassennamen.

Teilen | bearbeiten

Dies funktioniert für mich auch, aber nur, wenn ich angewendet einige benutzerdefinierte Thema Stil von Toolkits. Es gibt einige andere Abhilfen, wenn Sie Thema aus Toolkit verwenden

Best,

debarisi

hatte ich gleiches Problem. Ich löste es eine statische Ressource für den Control Style mit

Das ist der Stil i verwendet:

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

Wenn ich diesen Stil nicht die Verwendung Zoll Artikel sind nicht richtig, wie ich configure angezeigt in DataItem, stattdessen zeigen sie die Klassennamen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top