我有一个包含多个项目的列表框。并且选择已更改的事件已映射到一个函数。但每次我选择一个列表框项目时,事件都会被触发两次。结果我在第二轮中将所选索引作为-1。
有谁知道这种行为的原因?
XAML代码
<ListBox ItemTemplate="{StaticResource productTemplate}" Name="lstItems" SelectionChanged="ShowProductDetails">
C#代码
private void ShowProductDetails(object sender, SelectionChangedEventArgs e)
{
Item item = lstItems.SelectedItem as Item;
int index = lstItems.SelectedIndex;
}
答案 0 :(得分:6)
每次更改选择时(无论是否来自用户输入)都会发生选择更改事件
当您重新加载列表框时,选择会更改(最可能为-1)
下面的代码检查以确保用户选择了某个东西(具有有效索引的项目,即非-1)然后运行代码。
private void ShowProductDetails(object sender, SelectionChangedEventArgs e)
{
if(lstItems.SelectedIndex != -1)
{
Item item = lstItems.SelectedItem as Item;
int index = lstItems.SelectedIndex;
}
}