具有相同值的多个项目时,AutoCompleteBox问题

时间:2011-03-02 13:36:49

标签: c# .net wpf autocompletebox

我的问题是,如果我在ValueMemberPath中拥有具有相同值的对象,则AutoCompleteBox会在选择正确的项目后选择第一个项目。 我已经将SelectedItem绑定到一个Property,如果有多个具有相同值的项目,我可以看到它被触发两次。

我已将AutoCompleteBox绑定到Person对象的ObservableCollection。

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

当我写“Per”时,DropDown中会显示4个项目。现在,当我选择第四个时,它会被选中并且绑定会更新。然而,它然后回到第一项。这是一个错误或预期的行为,任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我遇到同样的问题。我还没有尝试过,但我找到了这个链接,它看起来有解决方案 http://www.yumasoft.com/node/45

修改
我刚刚确认这确实有效。

评论询问用户如何区分。 ItemTemplate提供的详细信息比TextBox部分中显示的更详细。这允许用户决定使用哪个记录。