Краткий ответ: то, что вы хотите сделать, нельзя сделать напрямую в XAML, но есть и другие способы сделать это.
Длинный ответ: ComboBox ищет свойство TextSearch.Text непосредственно в элементах данных, хранящихся в коллекции Items или ItemsSource. Поэтому вы не можете установить свойство в шаблоне данных или стиле, потому что они применяются к объектам, используемым для отображения элементов данных, а не к самим элементам данных.
В частности, если вы посмотрите на примеры на странице класса класса *1005*, вы увидите, что они присоединяют свойство TextSearch.Text к объектам Image, которые входят в коллекцию ComboBox.Items. Вы можете сделать это в своей программе, сделав Person объектом DependencyObject, но я не думаю, что вы хотите установить свойство для каждого отдельного объекта таким образом.
У вас есть несколько вариантов здесь:
Если вы можете изменить класс Person, вы можете либо определить метод ToString (), чтобы он возвращал текст для автозаполнения, либо определить произвольное свойство, например, Fullname, и установить Textsearch.TextPath в ComboBox. Например:
public class Person
{
string FirstName { get; set; }
string LastName {get; set; }
string FullName { get { return String.Format("{0} {1}", FirstName, LastName); } }
}
и
<ComboBox TextSearch.TextPath="FullName" ItemsSource="collectionOfPersons"/>
В качестве альтернативы, если вы не хотите прикасаться к Person, вы можете создать класс-оболочку, который предоставляет эти свойства.