gpt4 book ai didi

c# - 如何复制现有列并将其插入到datagrid中?

转载 作者:行者123 更新时间:2023-12-03 10:40:21 32 4
gpt4 key购买 nike

我目前有一个datagrid,其中包含每列的唯一上下文菜单。.示例xaml如下:

  <DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ContextMenu" Value="{StaticResource default_columnHeaderMenu}" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Person" Binding="{Binding Path=PersonID}" CellStyle="{StaticResource CenterAlignedCellStyle}" />

....

在上下文菜单中,我有一个名为“插入列”的项目,其中包含如下所示的列列表:
       <ContextMenu  x:Key="default_columnHeaderMenu" Name="defaultColumnHeaderMenu">
<MenuItem Header="Insert Column" >
<MenuItem Header="Person ID" Click="addColumn"/>
<MenuItem Header="Health" />
<MenuItem Header="Person Description" />
<MenuItem Header="Person Age" />

.....

我的问题是,使用列标题上下文菜单,将这些列添加或复制到我的数据网格中的最简单方法是什么? (我不是在寻找一个全新的空列,而是某种已经存在且具有相同数据的列的“副本”,等等。)

使用DataGrid.Columns,有什么方法可以根据标题名称查找列的索引?

感谢您的帮助/建议。

最佳答案

您可以将列定义为非共享资源:

<DataGridTextColumn x:Key="PersonColumn" x:Shared="False" Header="Person" Binding="{Binding Path=PersonID}" CellStyle="{StaticResource CenterAlignedCellStyle}" />

然后,在菜单项事件中,您可以检索它并将其添加到DataGrid中:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
var col = FindResource("PersonColumn") as DataGridTemplateColumn;
dataGrid.Columns.Add(col);
}

关于c# - 如何复制现有列并将其插入到datagrid中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719692/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com