У меня проблема со связыванием со свойством SelectedItem в ComboBox.
Существует ObservableCollection, которая связана со свойством ItemsSource и другим полем объекта, которое я хочу связать со свойством SelectedItem, в приложении.
Но приложение даже не запускается из-за исключения Target Invocation.
Я не знаю, важно ли связывать SelectedItem с одним из свойств одного экземпляра ItemsSource, или я могу использовать для него объявление свойства в viewmodel.Я пробовал оба варианта.Не помоглоЯ читал некоторые темы о такой проблеме, но эти решения не решают эту проблему.
<ComboBox x:Name="CategoryComboBox"
ItemsSource="{Binding CategoryList}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelectedCategory, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectionChanged="CategoryComboBox_SelectionChanged"
/>
public ObservableCollection<IItem> CategoryList { get; set; }
public IItem SelectedCategory
{
get
{
return _selectedCategory;
}
set
{
_selectedCategory = value;
RaisePropertyChangedEvent(nameof(SelectedCategory));
}
}
public interface IItem
{
int Id { get; set; }
string Name { get; set; }
}
private void CategoryComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var catName = (e.AddedItems[0] as IItem).Name;
vm.SelectedCategory = vm.CategoryList.Where(w => w.Name == catName).Select(s => s.Id).FirstOrDefault();
}
public void LoadLanguageList()
{
LanguageList = Repository.Current.GetLanguageList();
_selectedLanguage = LanguageList.FirstOrDefault(i => i.Id == 1);
RaisePropertyChangedEvent(nameof(SelectedLanguage));
}
В верхнем коде вы можете увидеть, как я пытаюсь связать, затем выбрано свойство коллекциисвойство элемента и тип элементов в качестве интерфейса.
Я знаю, что невозможно создать экземпляр интерфейса, но я не знаю, является ли объект привязки такого типа неправильным.Но я попытался привязать класс объекта другого типа, который реализует этот интерфейс, и результат был таким же.