我无法让 System.Windows.Controls.Input 中的自动完成框按我的意愿工作。当我开始键入显示过滤列表的下拉部分时,它不显示我绑定到的属性,而是显示类名。
因此,在下面的示例中,当我输入 my - 而不是显示“我的姓名”时,它显示的是 MyNamespace.Person。但是,当我从自动完成列表中选择项目时,它会在文本框中显示 FullName 属性。我确定我只是在某处缺少一个简单的自动完成框属性,但我看不到它。
示例代码:
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 代码中,我创建了一些 Person 对象并将它们存储在一个列表中,并将该列表绑定到一个自动完成框
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;
我的xml:
<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />
/* 输入 'my' 后,自动完成显示 'MyNamespace.Person' 而不是 'My Name',但在从列表中选择项目后显示 'My Name' */