这是一个常见问题,我在这里看到了很多提出和回答的问题。可悲的是,所有答案似乎都不适合我。如何让 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,但是,我必须承认,并没有走得太远。任何帮助将不胜感激。
尝试:
<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>