利用MouseBinding实现MVVM模式下的鼠标双击命令

<ListBox x:Name="cList" MinHeight="50" ItemsSource="{Binding CateCombinVM.CategoryCombinList}" Grid.Row="0" Grid.ColumnSpan="3">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="LightPink"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<StackPanel.InputBindings>
<MouseBinding Command="{Binding DataContext.CateCombinVM.LeftDoubleClickCommand, ElementName=WinBZ}"
CommandParameter="{Binding ElementName=cList, Path=SelectedItem }"
MouseAction="LeftDoubleClick"/>
</StackPanel.InputBindings>
<TextBlock Text="{Binding Path=Name, StringFormat=类型 {0}——}" Margin="5,0,10,0" Foreground="Red"></TextBlock>
<TextBlock Text="{Binding Path=Content}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!---
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding Edit}" CommandParameter="{Binding ElementName=UsersDataGrid, Path=SelectedItem}" />
--->
快捷键实现方式
WPF快捷键实现主要有自定义快捷键命令和全局快捷键两种方式。
自定义快捷键命令方式是通过KeyBinding为命令绑定快捷键,按键组合可使用“+”进行连接。可以通过Modifiers+Key和Gesture两种方式定义快捷键组合。可以任选其一进行使用,MSDN中建议使用Gesture方式定义以免发生混淆。
<Window.InputBindings>
<KeyBinding Modifiers="Control+Alt" Key="Z" Command="{StaticResource CaptureScreen}" />
<KeyBinding Gesture="Control+Alt+Q" Command="{StaticResource FullScreen}" />
</Window.InputBindings>
利用EventSetter 实现非MVVM模式的鼠标双击事件
设置响应事件类型 鼠标双击事件:Event=“MouseDoubleClick”
创建路由事件 Handler=“MusicListView_ItemDoubleClick”
<UserControl.Resources>
<Style x:Key="itemstyle" TargetType="{x:Type ListViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" />
</Style>
</UserControl.Resources>
<ListView Name="TrackListView" ItemContainerStyle="{StaticResource itemstyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="Artist" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Album.Artist.Name}" />
</GridView>
</ListView.View>
</ListView>
事件方法
private void HandleDoubleClick(object sender, MouseButtonEventArgs e)
{
...
}
MouseAction值
| MouseAction 字符 | 值 | 解释 |
|---|---|---|
| LeftClick | 1 | 单击鼠标左键 |
| LeftDoubleClick | 5 | 双击鼠标左键 |
| MiddleClick | 3 | 单击鼠标中键 |
| MiddleDoubleClick | 7 | 双击鼠标中键。 |
| None | 0 | 不执行任何操作。 |
| RightClick | 2 | 单击鼠标右键。 |
| RightDoubleClick | 6 | 双击鼠标右键。 |
| WheelClick | 4 | 旋转鼠标滚轮。 |

本文介绍了如何在WPF中利用MouseBinding在MVVM模式下实现鼠标双击命令,同时探讨了快捷键实现方式和非MVVM模式下使用EventSetter处理鼠标双击事件的方法。
334

被折叠的 条评论
为什么被折叠?



