0

私はWPF DataGridを使用しています。

列ヘッダーにコンテキスト メニューを追加しましたが、メニュー項目のクリック イベントでヘッダー テキストをコピーする方法がわかりません。

DataGrid.CurrentColumn を使用しようとしましたが、null です

どうもありがとう !

4

1 に答える 1

0

選択したセルを使用して列ヘッダーを取得してみてください:

foreach (var item in e.SelectedCells)
{
    DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromItem(item.Item);
    var col = item.Column as DataGridColumn;
    MessageBox.Show("" + col.Header);
}

現在使用している列ヘッダーを取得する場合は編集 して、次のコードを追加します。

リソースにこれを入れます:

<ContextMenu x:Key="cm">
            <MenuItem Header="Click"
                                  Click="mi_Click" 
                                  CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Parent}" />
        </ContextMenu>

次に、次のように列ヘッダー スタイルを追加します。

<Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="ContextMenu" Value="{StaticResource cm}"></Setter>
</Style>

次のようにコードを置きます。

private void mi_Click(object sender, RoutedEventArgs e)
{
    MenuItem mi = sender as MenuItem;
    if (mi != null)
    {
        ContextMenu cm = mi.CommandParameter as ContextMenu;
        if (cm != null)
        {
            var ch = cm.PlacementTarget as System.Windows.Controls.Primitives.DataGridColumnHeader;
            if (ch != null)
            {
                MessageBox.Show(ch.Content.ToString());
            }
        }
    }
}
于 2015-01-29T08:08:55.887 に答える