我目前在WPF ListView上有一些交互触发器,我用它来引发一个MouseDoubleClick事件,绑定到MVVM Design下我的viewmodel中的某个命令。
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding EditModeCommand}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
但是,这会导致一个问题,即如果单击listview的标题,滚动条或空格下的GridView,它仍会引发MouseDoubleClick。如果我没有SelectedItem,我会得到一个null实例异常。我的命令如下:
private void CreateEditAction()
{
ShowEditView = () =>
{
var selectedEvent = ListViewModel.SelectedEvent;
var selectedEventType = selectedEvent.Type;
if (selectedEventType == Type.A)
{
ShowEditAForm();
}
if (selectedEventType == Type.B)
{
ShowEditBForm();
}
};
}
我不想只对 selectedEvent = ListViewModel.SelectedEvent 进行空检查,因为实际上你应该只通过单击列表中的行来获取引发的事件。此外,如果我这样做,则意味着您可以在列表中选择一个项目,然后双击列标题并进入编辑器模式。
如何确定双击的来源?