Как скопировать существующий столбец и вставить его в сетку данных? - PullRequest
1 голос
/ 19 апреля 2011

В настоящее время у меня есть таблица данных, которая содержит уникальное контекстное меню для каждого столбца. Пример 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, есть ли способКак найти индекс столбца на основе имени заголовка?

Спасибо за любую помощь / предложения.

1 Ответ

1 голос
/ 19 апреля 2011

Вы можете определить свои столбцы как нераспределенные ресурсы:

<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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...