Vit*_*lik 1 wpf listview mouseevent
我有一个带有扩展选择模式的 ListView。默认情况下,当我按下左键时,它会选择一个项目,当我移动鼠标光标(缓慢)时,它会移动选择(只要按钮仍然按下)。
由于我在列表顶部实施拖放,因此有点烦人。当鼠标按钮按下时,如何防止它更改所选项目?我试图在 PreviewMouseMove 中说 e.Handled=true 但它没有帮助。
更新
最后一个解决方案不起作用。这是禁用鼠标移动选择的两个事件的组合。The problem is that when selecting an already selected item (no SelectionChanged occurs) then we can still move the mouse up or down to change the selection. 我发现解决这个问题的唯一方法是欺骗 ListView 再次选择相同的项目。如果您更改了选择功能,这可能会很不方便,否则这似乎可以完成工作。
<ListView SelectionMode="Extended"
Name="listView">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="Selected" Handler="listViewItem_Selected"/>
<EventSetter Event="PreviewMouseDown" Handler="listViewItem_PreviewMouseDown"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
Run Code Online (Sandbox Code Playgroud)
在 EventHandlers 中
void listViewItem_Selected(object sender, RoutedEventArgs e)
{
listView.ReleaseMouseCapture();
}
private void listViewItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
ListViewItem listViewItem = sender as ListViewItem;
if (listViewItem.IsSelected == true)
{
// Unselecting the item in the Preview event
// "tricks" the ListView into selecting it again
listViewItem.IsSelected = false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3153 次 |
| 最近记录: |