私は現在、コンボボックスに少し不満を感じており、誰かが私の質問に答えてくれることを望んでいます。問題は SelectedItem にあります。デバッガーでアプリを実行すると、アイテムのアイテム (つまり、a、b、または c) に一致するテキストを ComboBox に入力し、テキストを削除すると、null 参照例外がスローされます。ComboBox にテキストを入力し、それが一致せず、Items の Item(ie.. z) になってからテキストを削除しても、クラッシュしません。この動作は、デバッガー内でのみ発生します。アプリケーションを外部で実行しても、クラッシュしません。私は 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; }
}
仮想マシン:
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's name.
/// </summary>
public const string ItemsPropertyName = "Items";
private List<Item> _items;
/// <summary>
/// Sets and gets the Items property.
/// Changes to that property's 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's name.
/// </summary>
public const string ItemPropertyName = "Item";
private Item _item;
/// <summary>
/// Sets and gets the Item property.
/// Changes to that property's value raise the PropertyChanged event.
/// </summary>
public Item Item
{
get
{
return _item;
}
set
{
Set(ItemPropertyName, ref _item, value);
}
}