Автозаполненный текст в Silverlight
-
27-09-2019 - |
Вопрос
У меня возникли проблемы с получением автозаполнения в 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, вместо этого он показывает имя класса.