如何获取 InputBinding 以在 WPF 列表视图上触发 MouseBinding 命令

问题描述 投票:0回答:1

这是一个常见问题,我在这里看到了很多提出和回答的问题。可悲的是,所有答案似乎都不适合我。如何让 DoubleClick 命令在 ListView 中的 UserControl 上触发。我的xaml:

<ScrollViewer Grid.Column="1" Grid.Row="1" VerticalScrollBarVisibility="Auto">
    <ListView BorderThickness="0" x:Name="methodLV" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
              ItemsSource="{Binding Methods}"
              SelectedItem="{Binding SelectedMethod}">

        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Background="Transparent">
                    <Grid.InputBindings>
                        <MouseBinding Gesture="LeftDoubleClick" Command="{Binding EditMethodCommand}"/>
                    </Grid.InputBindings>
                    <control:MethodCardControl/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
        
    </ListView>
</ScrollViewer>

我尝试将命令添加到用户控件本身:

<UserControl Background="Transparent">
    <UserControl.InputBindings>
       <MouseBinding Gesture="LeftDoubleClick" Command="{Binding OpenControlPanelCommand}"/>
    </UserControl.InputBindings>
</UserControl>

我尝试将命令直接添加到ListView:

<ListView.InputBindings>
   <MouseBinding Gesture="LeftDoubleClick" Command="{Binding EditMethodCommand}"/>
</ListView.InputBindings>

命令将会触发,但只有列表视图上的空部分(这是有道理的 - 至少命令有效)。

我也尝试过调查 DependencyProperties,但是,我必须承认,并没有走得太远。任何帮助将不胜感激。

c# wpf mvvm
1个回答
0
投票

尝试:

    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Background="Transparent">
                <Grid.InputBindings>
                    <MouseBinding Gesture="LeftDoubleClick"
                                    Command="{Binding DataContext.EditMethodCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"/>
                </Grid.InputBindings>
                <control:MethodCardControl/>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
© www.soinside.com 2019 - 2024. All rights reserved.