Đây là ví dụ hoạt động của phương pháp kích hoạt lệnh (Trong ViewModel) dựa trên mục được nhấp trong danh sách. Lệnh trong ViewModel sẽ nhận được mục "được nhấp" làm tham số của nó.
Tôi đang sử dụng Textblock.InputBindings và có thể là một phần của Blend SDK được liên kết bởi Blachshma, nhưng bạn sẽ không cần bất kỳ DLL nào khác để hoạt động.
Trong ví dụ của tôi, ViewModel được gắn với DataContext của UserControl, đó là lý do tại sao tôi cần sử dụng RelativeSource FindAncestor để tìm ViewModel từ TextBlock của tôi.
Sửa: Cố định vấn đề chiều rộng bằng cách gắn các Width của TextBlock đến ActualWidth của ListBox.
Chỉ cần một sự cố, nhấp đúp sẽ chỉ hoạt động khi bạn nhấp vào bên trong văn bản trong khối chữ ngay cả khi danh sách đó rộng hơn nhiều.
<ListView ItemsSource="{Binding Model.TablesView}" Grid.Row="1"
SelectedItem="{Binding Model.SelectedTable, Mode=TwoWay}" >
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=.}"
Width="{Binding Path=ActualWidth,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
<TextBlock.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DataContext.MoveItemRightCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}}"
CommandParameter="{Binding .}"/>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Nguồn
2012-12-24 22:55:24
Hãy xem [ở đây] (http://stackoverflow.com/questions/4785685/wpf-and-mvvm-binding -events) cho một ví dụ MVVM cho các sự kiện Mouse. –