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);
}
}
}
![]()
![]()
![]()
![]()