向xaml中的数据网格列添加复制右键单击上下文菜单
本文关键字:复制 添加 右键 单击 菜单 上下文 网格 xaml 数据 数据网 | 更新日期: 2023-09-27 18:17:17
<DataGridTextColumn Header="S.No" Binding="{Binding SerialNumberId}"
IsReadOnly="True">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" >
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Command="Copy"></MenuItem>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
我想在数据网格的这个特定列"S.No"的上下文菜单中添加复制选项。但是整个行的内容被复制而不是网格中的一个单元格。如何实现仅复制一个应用上下文的单元格而不是整个行?
像这样使用命令参数:
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
在你的代码中改变你的Command参数,你就可以使用它了
你可以在你的DataGrid上添加一个CommandBinding来绑定一个函数:
<DataGrid x:Name="dataGrid1" AutoGenerateColumns="False">
<DataGrid.CommandBindings>
<CommandBinding Command="ApplicationCommands.Copy" Executed="DatagridExecuted" />
</DataGrid.CommandBindings>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
在函数中,可以找到事件的来源,
获取对应于一行的DataContext,
,从DataContext中,获得可以放入剪贴板的确切属性
private void DatagridExecuted(object sender, ExecutedRoutedEventArgs e)
{
DataGridCell cell = e.OriginalSource as DataGridCell;
if (cell != null)
{
Product product = cell.DataContext as Product;
if (product != null)
{
Clipboard.SetText(product.SerialNumberId);
}
}
}