PersonVM.cs
public class MainWindowVM
{
public MainWindowVM()
{
PersonList = new ObservableCollection<Person>(Employees);
}
private Person[] Employees = new Person[]
{
new Person { ID = 1, Name = "Adam" },
new Person { ID = 2, Name = "Bill" },
new Person { ID = 10, Name = "Charlie" },
new Person { ID = 15, Name = "Donna" },
new Person { ID = 20, Name = "Edward" }
};
public ObservableCollection<Person> PersonList { get; set; }
}
Person.cs
public class Person
{
public string Name { get; set; }
public int ID { get; set; }
}
MainWindow.xaml (Функционально рабочая версия - не то, что я хочу отображать)
<Window x:Class="TestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<ComboBox Height="23" Width="300"
ItemsSource="{Binding Path=Objects}"
DisplayMemberPath="Name"
>
</ComboBox>
</Grid>
</Window>
MainWindow.xaml (Отображается правильно - не работает должным образом)
<Window x:Class="TestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<ComboBox Height="23" Width="300"
ItemsSource="{Binding Path=Objects}"
>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding}">
<TextBlock.Text>
<MultiBinding StringFormat="{} {0} | {1}">
<Binding Path="ID" />
<Binding Path="Name" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Window>
Второй код отображает то, что я хочу, чтобы ComboBox отображал {ID} | {Name}
, но забирает общую функцию ComboBox. В первом примере, когда выбран ComboBox, пользователь может начать вводить в него текст и заставить его перейти вниз по списку. Например, если вы нажмете букву A, она перейдет к «Адам», B перейдет к «Биллу» и т. Д. Вот как должен функционировать ComboBox. Но когда я переопределяю ComboBox ItemTemplate, он теряет эту функциональность. Есть ли другой способ привязать то, что мне нужно, и сохранить эту функциональность, или снова включить ее? Возможно, шаблон ItemTemplate настроен неправильно?