爲了一個非常具體的原因,我想在鼠標按鈕上選擇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 Selection ClickMode
- 5. wpf listview itempanel scrollviewer
- 6. WPF contextmenu和ListView
- 7. WPF ListView控件
- 8. WPF的ListView
- 9. WPF Listview操縱
- 10. WPF Horisontal listview
- 11. WPF ListView雙擊
- 12. TreeView&ListView WPF
- 13. WPF - 填充ListView
- 14. WPF ListView問題
- 15. WPF ListView標題
- 16. WPF XAML ListView MouseOverItem
- 17. Wpf listview item object doubleclick
- 18. WPF二維DataGrid/ListView?
- 19. WPF ListView SelectedItem爲空
- 20. wpf可編輯ListView
- 21. 的ListView列在WPF
- 22. WPF得到的ListView
- 23. WPF ListView列選擇
- 24. WPF控制的ListView
- 25. LargeImages to WPF ListView port
- 26. WPF ListView MouseOver項目
- 27. WPF ListView SelectedItems DataBinding MVVM
- 28. ListView C#WPF綁定
- 29. WPF listview drag without deselect
- 30. WPF ListView設置SelectedItem
好的答案,我設法實現了我的附屬屬性解決方案,但結果只是一點點太複雜和棘手比我希望的! :) – 2010-01-12 05:11:42