[英]C# WPF DataGrid Contextmenu clicked column
I have simply Datagrid and context menu.我只有 Datagrid 和上下文菜单。 I want to get information on what column of datagrid context menu appears.
我想获取有关出现数据网格上下文菜单的哪一列的信息。 In WinWorms I found solution that MouseClick shows context menu manually and remember column
在 WinWorms 中,我找到了 MouseClick 手动显示上下文菜单并记住列的解决方案
if (e.Button != MouseButtons.Right) return;
contextMenuStrip1.Show(dataGridView1, e.Location);
_ClickedColumn = dataGridView1.HitTest(e.X, e.Y).ColumnIndex;
How can I get column number in wpf datagrid?如何在 wpf 数据网格中获取列号?
您可以尝试以下操作以获得列索引。
var index = dataGridName.CurrentColumn;
在menuItem单击或ContextMenuOpening事件中,只需检查DataGrid.CurrentColumn
I've been messing with this all afternoon and came up with a solution that seems to work.我整个下午都在搞砸这个问题,并想出了一个似乎可行的解决方案。
XAML XAML
<DataGrid Name="dgCSVExample" ItemsSource="{Binding}" >
<DataGrid.Resources>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="ContextMenuOpening" Handler="DataGridColumnHeader_ContextMenuOpening"/>
</Style>
</DataGrid.Resources>
CS CS
private int _LastClickedColumn = 0;
private void DataGridColumnHeader_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
_LastClickedColumn = ((DataGridColumnHeader)sender).TabIndex;
Debug.WriteLine("hide clicked");
}
Then in the context menu option click event I was able to access the DataTable (or it would work with a List object as well) by doing this:然后在上下文菜单选项单击事件中,我可以通过执行以下操作访问 DataTable(或者它也可以与 List 对象一起使用):
private void miHide_Click(object sender, RoutedEventArgs e)
{
DataColumn dc = _dtSampleCSV.Columns[_LastColumnClicked];
//process data here
Debug.WriteLine("miHide clicked");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.