WPF 中是否需要对事件处理程序参数进行验证检查?
There are need to validation check for event handler argument in WPF?
下面是示例代码。
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// case 1
if (sender is ListBox)
{
...
}
// case 2
if (e.AddedItems.Count > 0)
{
if (e.AddedItems[0] is MyItemClass)
{
...
}
}
}
这里对于情况1,我们已经知道sender是一个ListBox。但是是否需要像上面的示例代码那样进行验证检查?
同样,在情况2中,项目在列表框中被选中,我们已经知道项目类型是什么。但是是否需要检查AddedItems.Count和类型验证检查?
从理论上讲,您可以让列表框的另一个子项更改其自己的选择,并且该事件可能会冒泡到列表框,而列表框又会尝试处理它。所以,不太可能,但如果代码经过审查,则认为是正确的。
再一次,是的。因为选择更改意味着 Removed/Added 并且您无法确定发生了什么变化。如果您不关心更改本身,您可以简单地从步骤 1 中获取列表框实例并检查其 SelectedItems,然后使用它们。
下面是示例代码。
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// case 1
if (sender is ListBox)
{
...
}
// case 2
if (e.AddedItems.Count > 0)
{
if (e.AddedItems[0] is MyItemClass)
{
...
}
}
}
这里对于情况1,我们已经知道sender是一个ListBox。但是是否需要像上面的示例代码那样进行验证检查?
同样,在情况2中,项目在列表框中被选中,我们已经知道项目类型是什么。但是是否需要检查AddedItems.Count和类型验证检查?
从理论上讲,您可以让列表框的另一个子项更改其自己的选择,并且该事件可能会冒泡到列表框,而列表框又会尝试处理它。所以,不太可能,但如果代码经过审查,则认为是正确的。
再一次,是的。因为选择更改意味着 Removed/Added 并且您无法确定发生了什么变化。如果您不关心更改本身,您可以简单地从步骤 1 中获取列表框实例并检查其 SelectedItems,然后使用它们。