为了一个非常具体的原因,我想在鼠标按钮上选择ListViewItem
s,而不是实际上按下鼠标按钮。我希望将此行为嵌入到控件中。是否有可能实现这一目标?任何人都可以提示吗?WPF Listview modification
回答
阿维亚德P.的回答是一个很好的,并巧妙地利用附加属性,但我倾向于使用不同的技术大部分的时间:
- 子类的ListViewItem。
- 重写OnMouseLeftButtonDown和OnMouseRightButton不执行任何操作。
- 重写OnMouseLeftButtonUp/OnMouseRightButtonUp来调用base.OnMouseLeftButtonDown/base.OnMouseRightButtonDown。
- 子类ListView。
- 覆盖GetContainerForItemOverride()返回你的ListViewItem的覆盖
这似乎不是订阅ItemContainer事件和动态增加处理程序更容易给我。
这是什么样子:
public class MouseUpListViewItem : ListViewItem
{
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {}
protected override void OnMouseRightButtonDown(MouseButtonEventArgs e) {}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
}
protected override void OnMouseRightButtonUp(MouseButtonEventArgs e)
{
base.OnMouseRightButtonDown(e);
}
}
public class MouseUpListView : ListView
{
protected override DependencyObject GetContainerForItemOverride()
{
return new MouseUpListViewItem();
}
}
我喜欢这个技术,因为这牵涉更少的代码。
是的,这是绝对有可能使用附加属性。定义一个名为SelectOnMouseUp
的附加属性,并将其设置为true时,挂钩到ItemsContainerGenerator
事件以发现添加新项目容器的时间。然后,当您收到新物品容器的事件时,挂钩其PreviewMouseDown
并忽略它(将e.Handled
设置为true),并挂钩到其MouseUp
事件并执行选择(设置IsSelected
至true
)。
感谢您的回复,是否有可能在XAML中使用它? – 2010-01-11 19:32:51
您无法在纯XAML中“掩盖”正常的“MouseDown”行为。 – 2010-01-11 19:37:25
+1为聪明的使用附加属性和'ItemContainerGenerator',但也看到我的答案,更简单地使用'GetContainerForItemOverride'解决问题 – 2010-01-11 23:46:46
- 1. Numpy masked array modification
- 2. Javascript count up timer modification
- 3. WPF Listview
- 4. WPF ListView更新来源ListView
- 5. WPF Listview Selection ClickMode
- 6. WPF ListView控件
- 7. wpf listview itempanel scrollviewer
- 8. TextBox Inside ListView WPF
- 9. WPF Horisontal listview
- 10. WPF ListView TextBlock TextWrapping
- 11. WPF Listview Textbox Highlight
- 12. WPF的ListView
- 13. TreeView&ListView WPF
- 14. WPF ObservableCollection&Listview
- 15. WPF contextmenu和ListView
- 16. WPF ListView问题
- 17. WPF Listview item highlighting
- 18. WPF - 填充ListView
- 19. WPF ListView标题
- 20. WPF Listview操纵
- 21. WPF ListView双击
- 22. WPF XAML ListView MouseOverItem
- 23. ListView C#WPF绑定
- 24. WPF ListView SelectedItem为空
- 25. WPF ListView的造型
- 26. WPF二维DataGrid/ListView?
- 27. Wpf listview item object doubleclick
- 28. 的ListView列在WPF
- 29. WPF中的ListView SelectedValue
- 30. WPF ListView Star(“*”)大小
好的答案,我设法实现了我的附属属性解决方案,但结果只是一点点太复杂和棘手比我希望的! :) – 2010-01-12 05:11:42