Моя проблема заключается в том, что если у меня есть объекты с одинаковым значением в 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 элемента.Теперь, когда я выбрал четвертый, он выбирается, и привязка обновляется.Однако затем он возвращается к первому пункту.Это ошибка или предполагаемое поведение, и может ли кто-нибудь помочь мне с этой проблемой?