为什么ListView.InputBindings
无效?
我以同样的方式实现了Interaction.Triggers
,它运行得很好。
<ListView Name="listView1" ItemsSource="{Binding Cars}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseClick">
<i:InvokeCommandAction Command="{Binding ItemSelectCommand}" CommandParameter="{Binding ElementName=listView1,Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ListView.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding ItemSelectCommand}" CommandParameter="{Binding ElementName=listView1,Path=SelectedItem}"/>
</ListView.InputBindings>
</ListView>
如果没有(System.Windows.Interactivity
Interaction.Triggers
)
答案 0 :(得分:3)
正如@ Grx70在对此答案的评论中提到的那样,父LeftClick
中定义的ListView
鼠标手势不适用于ListViewItem
因为该项目处理此手势为了获得焦点,所以它没有泡出那个姿势。
您可以将InputBinding
处理转移到ListViewItem
本身:
<ListView Name="listView1" ItemsSource="{Binding A}">
<ListView.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}">
<ContentPresenter.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding DataContext.ItemSelectCommand, ElementName=listView1}" CommandParameter="{Binding ElementName=listView1,Path=SelectedItem}"/>
</ContentPresenter.InputBindings>
</ContentPresenter>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
你还可以阅读更多关于InputBinding
在this qestion中如何运作的内容,有一个答案可以解释这一点。答案建议也要创造一种附加行为。