我有一个用户控件,里面有一个listview。此列表视图的SelectionChanged事件在用户控件内处理。相同的代码如下:
private void lstvMyView_SelectionChanged(object sender, SelectionChangedEventArgs e) {...}
我想从用户控件中的其他位置再次调用此处理程序。所以要调用这个处理程序,我需要那里的“SelectionChangedEventArgs”。当我尝试创建“SelectionChangedEventArgs”的实例时,我无法理解我应该将什么作为参数传递给“SelectionChangedEventArgs”的构造函数。
我想要调用此处理程序的地方不会添加或删除列表视图中的任何项目。它只是导航列表视图中的项目,从而更改列表视图的selectedindex。
我正在尝试做这样的事情。以下代码显然不正确。
lstvMyView_SelectionChanged(_lstvMyView, new SelectionChangedEventArgs());
答案 0 :(得分:2)
我想从用户控件
中的其他位置再次调用此处理程序
<强>不即可。不应该从代码中显式调用事件处理程序。无论您在此处理程序中执行什么操作,都可以将其放在另一个只接受所需参数的方法中,并从代码中调用that
方法。
答案 1 :(得分:0)
可以实例化SelectionChangedEventArgs
进行单元测试,如下所示:
new SelectionChangedEventArgs(
System.Windows.Controls.Primitives.Selector.SelectionChangedEvent,
new List<CustomViewModel> { },
new List<CustomViewModel> { customViewModel }
)
请注意,removedItems
和addedItems
都不能为null,因此应传递空集合。