[英]Executing a Command when a ListView is DoubleClicked. (WPF - MVVM)
我在將命令(ICommand)綁定到ListView的MouseBinding時遇到一些困難。 我使用了這段XAML代碼來測試不同的鼠標手勢:
<ListView.InputBindings>
<MouseBinding Command="{Binding OpenSOACommand}" Gesture="LeftClick" />
<MouseBinding Command="{Binding OpenSOACommand}" Gesture="MiddleClick" />
<MouseBinding Command="{Binding OpenSOACommand}" Gesture="LeftDoubleClick" />
</ListView.InputBindings>
不會觸發LeftClick和LeftDoubleClick手勢,但是MiddleClick鼠標綁定可以完美工作(我也一次測試了一次鼠標綁定...)。
LeftDoubleClick和MiddleClick手勢的處理方式是否有所不同? 如果存在,如何將ICommand綁定到LeftDoubleClick手勢?
謝謝!
ListView的默認Click
事件將事件標記為已處理。 嘗試改用PreviewLeftClick
和PreviewLeftDoubleClick
編輯
由於MouseBindings
不包含PreviewLeftClick
或PreviewLeftDoubleClick
,請嘗試使用此處找到的AttachedCommandBehavior
代碼,該代碼可讓您將Command
附加到幾乎任何Event
例如,
<ListView local:CommandBehavior.Event="PreviewMouseDown"
local:CommandBehavior.Command="{Binding OpenSOACommand}" />
這是因為ListView的ListViewItems將吞噬LeftClick事件並將其轉換為漂亮的SelectionChanged事件。 由於ListViewItems不會響應MiddleClick,因此可以正常工作。
您可能希望通過處理與事件匹配的預覽等效項來獲得此點擊的“前面”位置。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="MouseDoubleClick" Handler="OnItemDoubleClick"/>
</Style>
</ListView.ItemContainerStyle>
並在處理程序中調用命令:
private void OnItemDoubleClick(object sender, MouseButtonEventArgs e)
{
OpenSOACommand.Execute(null, this);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.