【发布时间】:2016-03-20 08:33:45
【问题描述】:
我正在设计一个 wpf 应用程序。我编写了一个网格(有 35 个文本块)范围的上下文菜单。当我单击鼠标右键时,我需要了解单击了哪个文本块。但是单击事件将 centtext 菜单作为发送者。如何到达用户单击鼠标右键的文本块?
我的 XAML 代码-------------------------------------------- -------------------:
<Grid>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="Hafta İçi" x:Name="btnWeekDay" Click="btnWeekDay_Click" />
<MenuItem Header="Cuma" x:Name="btnFriday" Click="btnFriday_Click"/>
<MenuItem Header="Cumartesi" x:Name="btnSaturday" Click="btnSaturday_Click"/>
<MenuItem Header="Pazar" x:Name="btnSunday" Click="btnSunday_Click"/>
<MenuItem Header="İdari İzin" x:Name="btnAdminLeave" Click="btnAdminLeave_Click"/>
<MenuItem Header="Bayram/Tatil" x:Name="btnHoliday" Click="btnHoliday_Click" a/>
</ContextMenu>
</Grid.ContextMenu>
我的 C# 代码-------------:
private void btnWeekDay_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(sender + e.Source.ToString());
}
【问题讨论】:
-
您是否检查了 MouseButtonEventArgs 的
OriginalSource属性? -
你能发布你的代码吗?
-
我的事件是鼠标右键单击,所以我无法到达 mousebuttoneventargs。
-
您发布的代码显示您处理的是
Click,而不是MouseRightButtonDown。在您的代码中的任何地方也没有看到TextBlock。请提供一个好的minimal reproducible example 可靠地重现该问题。请注意,将ContextMenu附加到Grid,是Grid处理打开上下文菜单的鼠标事件。您可能需要考虑设置网格项目的样式,以便它们中的每一个实际上都拥有一个上下文菜单。
标签: c# wpf events gridview contextmenu