Как связать SelectedItem ComboBox с объектом, который является копией элемента из ItemsSource?
Я использую шаблон MVVM с WPF и столкнулся с проблемой, которую я могу упростить до следующего:
У меня есть модель CardType.
public class CardType
{
public int Id { get; set; }
public string Name { get; set; }
}
И у меня есть viewmodel, которая потребляет CardType.
public class ViewModel : INotifyPropertyChanged
{
private CardType selectedCardType;
public CardType SelectedCardType
{
get { return selectedCardType; }
set
{
selectedCardType = value;
OnPropertyChanged(nameof(SelectedCardType));
}
}
public IEnumerable<CardType> CardTypes { get; set; }
// ... and so on ...
}
Мой XAML имеет ComboBox, который основывает свои элементы на CardTypes и должен предварительно выбрать элемент на основе SelectedCardType.
<ComboBox ItemsSource="{Binding CardTypes}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelectedCardType}"/>
По независящим от меня причинам объект SelectedCardType будетсправочно-неравная копия элемента в CardTypes. Поэтому WPF не удается сопоставить SelectedItem с элементом в ItemsSource, и когда я запускаю приложение, сначала появляется ComboBox без выбранного элемента.
Я попытался переопределить методы Equals () и GetHashCode () для CardType, но WPF по-прежнему не соответствует элементам.
Учитывая мои специфические ограничения, как я могу заставить ComboBox выбрать правильный элемент?