WPF的DataGrid中如何通过上下文菜单(右键菜单)实现删除行的操作

zodiac444 2014-12-04 12:06:00
我已经在DataGrid中添加了上下文菜单:
以下是标记。DataGrid所绑定的数据在一个名叫m_Records的链表中。该对象的类型包含Time和Record属性:
<DataGrid Name="dataGrid">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Click="MenuItem_Click"></MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.columns>
<DataGridTextColumn Header="时间" Binding={"Binding Path=Time"}></DataGridTextColumn >
<DataGridTextColumn Header="内容" Binding={"Binding Path=Record"}></DataGridTextColumn >
</DataGrid.columns>
</DataGrid>


以下是事件处理程序:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{}

请问要怎么样才能实现,单击菜单的删除项后,就把鼠标下方的项从dataGrid中删除?我曾想过用DataGrid的SelectItem属性,但是那是第一个被选中的项,不一定是当前鼠标指针下方的项。
...全文
1335 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32600351 2015-12-09
  • 打赏
  • 举报
回复
我也遇到同样问题了,单击右键的时候如何选中单元格啊?
fhqi4c 2015-02-14
  • 打赏
  • 举报
回复
//前台
    <Grid>
        <DataGrid Name="datagrid" Margin="67,42,468,222"  SelectionMode="Extended" >
            <DataGrid.ContextMenu>
                <ContextMenu Name="dgmenu1" StaysOpen="true" >
                    <MenuItem Header="删行" Click="menuitem_click" >
                    </MenuItem>
                </ContextMenu>                
            </DataGrid.ContextMenu>
        </DataGrid>
    </Grid>
//后台

        DataTable dt = new DataTable();
        private void menuitem_click(object sender, RoutedEventArgs e) {
            this.dt.Rows.Remove(((DataRowView)this.datagrid.SelectedItems[this.datagrid.SelectedItems.Count - 1]).Row);
        }
        /// <summary>
        /// 窗体首次加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mainwindow_loaded(object sender, RoutedEventArgs e) {
            dt.Columns.Add("a", System.Type.GetType("System.Boolean"));// System.Type.GetType("System.String")//System.Boolean
            dt.Columns.Add("b", System.Type.GetType("System.String"));
            for (int i = 0; i < 7; i++) {
                DataRow dr = dt.NewRow();
                dr["a"] = DBNull.Value;
                dr["b"] = "你好" + i;
                dt.Rows.Add(dr);
            }
            this.datagrid.ItemsSource = dt.DefaultView;
        }
exception92 2014-12-04
  • 打赏
  • 举报
回复
应该是 先选中项,然后再 点击右键 执行删除操作。
zodiac444 2014-12-04
  • 打赏
  • 举报
回复
经测试,就算先选中了其他任何项,在单击右键弹出上下文菜单的同时,DataGrid.SelectedItem就是指向鼠标下方的那个项。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧