WPF datagrid contextmenu menuitem commandparameter CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu},Path=PlacementTarget}"

Install-package newtonsoft.json

 

 

复制代码
 <DataGrid.ContextMenu>
     <ContextMenu>
         <MenuItem Header="Export Selected" Command="{Binding ExportSelectedCmd}"
    CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
             AncestorType=ContextMenu},Path=PlacementTarget}"/>
         <MenuItem Header="Export All" Command="{Binding ExportAllCmd}"
    CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
             AncestorType=ContextMenu},Path=PlacementTarget}"/>
     </ContextMenu>
 </DataGrid.ContextMenu>           
 <DataGrid.Columns>



//viewmodel
public DelCmd ExportSelectedCmd { get; set; }
public DelCmd ExportAllCmd { get; set; }

private void InitCmds()
{
    ExportSelectedCmd = new DelCmd(ExportSelectedCmdExecuted);
    ExportAllCmd = new DelCmd(ExportAllCmdExecuted);
}

private void ExportAllCmdExecuted(object obj)
{
    var dg = obj as DataGrid;
    if(dg!=null)
    {
        var items = dg.ItemsSource.Cast<Book>()?.ToList();
        if(items!=null && items.Any())
        {
            string jsonStr=JsonConvert.SerializeObject(items,formatting: Formatting.Indented);
            string allJsonFile = $"All{DateTime.Now.ToString("yyyyMMddHHmmssffff")}_{Guid.NewGuid().ToString()}.json";
            File.AppendAllText(allJsonFile, jsonStr);
            MessageBox.Show($"Exported at:\n{allJsonFile}", "Export successfully!", MessageBoxButton.OK);
        }
    }
}

private void ExportSelectedCmdExecuted(object obj)
{
    var dg = obj as DataGrid;
    if (dg != null)
    {
        var items = dg.SelectedItems.Cast<Book>()?.ToList();
        if (items != null && items.Any())
        {
            string jsonStr = JsonConvert.SerializeObject(items, formatting: Formatting.Indented);
            string selectedFile = $"Selected{DateTime.Now.ToString("yyyyMMddHHmmssffff")}_{Guid.NewGuid().ToString()}.json";
            File.AppendAllText(selectedFile, jsonStr);
            MessageBox.Show($"Exported at:\n{selectedFile}", "Export successfully!", MessageBoxButton.OK);
        }
    }
}
复制代码

 

 

 

 

 

 

 

 

 

 

 

 

posted @   FredGrit  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示