Сейчас я немного расстроен с помощью combobox и надеюсь, что у кого-то есть ответ на мой вопрос. Проблема заключается в SelectedItem. Когда я запускаю свое приложение в отладчике, он будет генерировать исключение с ссылкой на null, если я введу текст в ComboBox, который соответствует элементу (то есть.. a, b или c) в элементах, а затем удалит текст. Если я ввожу текст в ComboBox, и это не соответствует, а Item (ie.. z) в Items, а затем удаляет текст, он не падает. Такое поведение происходит только в отладчике. Если я запустил приложение за пределами, я не сбой. Я использую mvvmlight takeit, но я не думаю, что это имеет к этому какое-то отношение. Мой код ниже
Вид:
<ComboBox IsEditable="True"
VerticalAlignment="Top"
ItemsSource="{Binding Items}"
DisplayMemberPath="Name"
SelectedItem="{Binding Item,Mode=TwoWay}"/>
Модель:
public class Item
{
public string Name { get; set; }
public int Id { get; set; }
}
VM:
public MainViewModel()
{
Items = new List<Item>
{
new Item {Name="a", Id=0},
new Item {Name="b", Id=1},
new Item {Name="c", Id=2},
};
}
/// <summary>
/// The <see cref="Items" /> property name.
/// </summary>
public const string ItemsPropertyName = "Items";
private List<Item> _items;
/// <summary>
/// Sets and gets the Items property.
/// Changes to that property value raise the PropertyChanged event.
/// </summary>
public List<Item> Items
{
get
{
return _items;
}
set
{
Set(ItemsPropertyName, ref _items, value);
}
}
/// <summary>
/// The <see cref="Item" /> property name.
/// </summary>
public const string ItemPropertyName = "Item";
private Item _item;
/// <summary>
/// Sets and gets the Item property.
/// Changes to that property value raise the PropertyChanged event.
/// </summary>
public Item Item
{
get
{
return _item;
}
set
{
Set(ItemPropertyName, ref _item, value);
}
}