這是一個基於列表中單擊項目觸發命令(在ViewModel中)的方法的工作示例。 ViewModel中的命令將獲得「clicked」項目作爲其參數。
我使用的Textblock.InputBindings和可能是由Blachshma鏈接的混合SDK的一部分,但你不會需要任何其他DLL這個工作。
在我的例子視圖模型綁定到用戶控件的DataContext的,這就是爲什麼我需要使用的RelativeSource FindAncestor從我的TextBlock找到視圖模型。
編輯: 通過結合寬度的的TextBlock到列表框的ActualWidth的固定寬度的問題。
只是一個問題,雙擊將只有當你點擊的文本塊內的文本,即使該列表本身更廣泛的合作。
<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>
看看[這裏](http://stackoverflow.com/questions/4785685/wpf-and-mvvm-binding -events)爲Mouse事件的MVVM示例。 –