在WPF中使用交互触发器来引发MouseDoubleClick时,如何确定单击了哪个Control?

时间:2015-09-03 04:26:21

标签: c# wpf events mvvm user-interaction

我目前在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 进行空检查,因为实际上你应该只通过单击列表中的行来获取引发的事件。此外,如果我这样做,则意味着您可以在列表中选择一个项目,然后双击列标题并进入编辑器模式。

如何确定双击的来源?

0 个答案:

没有答案