Ошибка автозаполнения при наличии нескольких элементов с одинаковыми значениями - PullRequest
3 голосов
/ 02 марта 2011

Моя проблема заключается в том, что если у меня есть объекты с одинаковым значением в ValueMemberPath, AutoCompleteBox выбирает первый элемент после того, как он выбирает правильный элемент.Я привязал SelectedItem к свойству и вижу, что он срабатывает дважды, если есть несколько элементов с одинаковым значением.

Я привязал свой AutoCompleteBox к объектам ObservableCollection of Person.

public class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string FullName 
    {
        get
        {
            return Name + " - " + ID;
        }

    }
}

Мой XAML выглядит следующим образом:

<StackPanel>
    <inputtoolkit:AutoCompleteBox x:Name="autoCompleteBox" ValueMemberPath="Name" ItemsSource="{Binding Persons}" SelectedItem="{Binding SelectedPerson, Mode=TwoWay}">
        <inputtoolkit:AutoCompleteBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding FullName}" FontSize="14" FontWeight="Bold"></TextBlock>
            </DataTemplate>
        </inputtoolkit:AutoCompleteBox.ItemTemplate>
    </inputtoolkit:AutoCompleteBox>

    <TextBlock x:Name="textBlock" Text="{Binding SelectedPerson.ID}"></TextBlock>
</StackPanel>

Мой Window_Loaded выглядит следующим образом:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Persons = new ObservableCollection<Person>();

        Persons.Add(new Person() { ID = 1, Name = "Person" });
        Persons.Add(new Person() { ID = 2, Name = "Person" });
        Persons.Add(new Person() { ID = 3, Name = "Person" });
        Persons.Add(new Person() { ID = 4, Name = "Person" });

        autoCompleteBox.DataContext = this;
        textBlock.DataContext = this;
    }

Когда я пишу «По», в DropDown будут отображаться 4 элемента.Теперь, когда я выбрал четвертый, он выбирается, и привязка обновляется.Однако затем он возвращается к первому пункту.Это ошибка или предполагаемое поведение, и может ли кто-нибудь помочь мне с этой проблемой?

1 Ответ

1 голос
/ 30 сентября 2011

У меня такая же проблема. Я еще не пробовал, но нашел эту ссылку, и похоже, что есть решение.
http://www.yumasoft.com/node/45

Редактировать
Я только что подтвердил, что это работает.

За комментарии спрашивайте, как пользователь скажет разницу. Поставщики ItemTemplate более подробны, чем показано только в части TextBox. Это позволяет пользователю решать, какую запись использовать.

...