برنامج الأغذية العالمي listview بزر الماوس الأيمن فوق المشكلة
-
21-08-2019 - |
سؤال
وهكذا وقد أرفقت قائمة السياق (بزر الماوس الأيمن فوق القائمة) إلى listview برنامج الأغذية العالمي.
للأسف، عند النقر بزر الماوس الأيمن فوق فإنه إحضار كل من القائمة و<م> يختار م> أيا كان البند كنت أكثر. هل هناك طريقة لاغلاق هذا بزر الماوس الأيمن فوق حدد السلوك حين لا يزال يسمح قائمة السياق؟
المحلول
والمفتاح هو وضع الحدث PreviewMouseRightButtonDown في المكان الصحيح. كما ستلاحظ، حتى بدون وجود ContextMenu الحق النقر على ListViewItem سوف تختار هذا البند، وبالتالي نحن بحاجة الى تعيين الحدث على كل بند، وليس على يكون ListView.
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseRightButtonDown"
Handler="OnListViewItemPreviewMouseRightButtonDown" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu Item">Item 1</MenuItem>
<MenuItem Header="Menu Item">Item 2</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
</ListView>
و
private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("Preview MouseRightButtonDown");
e.Handled = true;
}
ومنذ أحداث المعاينة هي نفق هذا سوف منع RightMouseButtonDown من تحدث على ListViewItems منعهم من اختياره، ولكن لا يمنع RightMouseButtonDown على يكون ListView وهكذا لا تزال تسمح ContextMenu لفتح.
نصائح أخرى
ويبدو أن هذا الارتباط المفيد أيضا:
HTTP: / /social.msdn.microsoft.com/Forums/en-US/wpf/thread/e7f213e3-d8c0-4d13-8c39-51b214715c8a