Вопрос

У меня возникли проблемы с получением автозаполнения в System.Windows.controls.input, работая как я желаю. Когда я начинаю вводить раскрывающийся раздел, который отображает отфильтрованный список, не показывает свойство, к которому я связываю, он показывает имя класса.

Таким образом, в приведенном ниже примере, когда я печатаю в моем - вместо того, чтобы показывать «мое имя», это показывает My Manamespace.person. Однако, когда я выбираю элемент из списка автозаполнения, он отображает свойство FullName в TextBox. Я уверен, что я просто скучаю по простому автозаполнению недвижимости где-то, но я не вижу этого.

Пример кода:

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

В моем коде XAML позади я создаю несколько объектов и храните их в списке и связывайтесь с этим списком на автозаполнение

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;

Мой XAML:

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

/ * После ввода «My», Auto Complete Displays 'MyNamespace.person' вместо «Мое имя», но отображает «мое имя» после выбора элемента из списка * /

Это было полезно?

Решение

Оказывается, мне нужно использовать itemTemplate для раскрывающейся части автозаполнения, поэтому XAML для этого теперь будет следующим образом:

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

Другие советы

Да, ваша проблема была, потому что вы не поместили шаблон предмета. Но если вы поместите шаблон предмета и все еще получили проблему, читайте, что сандро выросло.

У меня была такая же проблема. Я решил его с помощью статического ресурса для стиля управления

Это стиль, который я использовал:

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

Если я не использую этот стиль, мой таможенный элемент не отображается правильно, как я настрою в PatterniteM, вместо этого он показывает имя класса.

Поделиться | Редактировать

Это тоже работает для меня, но только когда я применил какой-то пользовательский стиль темы из Toolkit. Есть некоторые другие обходные пути, когда вы используете тему из Toolkit

Лучший,

дебариси

У меня была такая же проблема. Я решил его с помощью статического ресурса для стиля управления

Это стиль, который я использовал:

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

Если я не использую этот стиль, мой таможенный элемент не отображается правильно, как я настрою в PatterniteM, вместо этого он показывает имя класса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top