在UserControl中的MouseDoubleClick事件中将e.handled = true设置为父控件

时间:2018-03-26 08:44:00

标签: c# asp.net wpf mvvm

我已根据MVVM模式开发了一个WPF应用程序。

用户控件

它有一个textBox控件,我已连接 MouseDoubleClick

 private void textbox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {                     
        e.Handled = true;
    }

<ListView>
       <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <i:InvokeCommandAction Command="{Binding DoubleClickCommand}"
                                       CommandParameter="{Binding data}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
</ListView>

问题是即使在设置e.Handled = true之后,也会在主视图中调用DoubleClickCommand。我希望在e.Handled = true时不要触发DoubleClickCommand。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

只需确保在父控件和用户控件中使用相同的DoubleClickCommand,假设这是您的用户控件:

<Window ... DataContext="{Binding ParentViewModel}" Name="Main">
<Grid>
    <ListView ItemsSource="{Binding ItemsCollection}">

        <ListView.ItemTemplate>
            <DataTemplate>
                <local:UserControl1>
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="MouseDoubleClick">
                            <i:InvokeCommandAction Command="{Binding DoubleClickCommand,ElementName=Main}"
                                               CommandParameter="{Binding data}" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </local:UserControl1>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>
</Window>

父母应该看起来像这样:

SELECT * FROM emergency."doctor''s patient"

现在Handled属性可以正常工作。