私はWPF DataGridを使用しています。
列ヘッダーにコンテキスト メニューを追加しましたが、メニュー項目のクリック イベントでヘッダー テキストをコピーする方法がわかりません。
DataGrid.CurrentColumn を使用しようとしましたが、null です
どうもありがとう !
私はWPF DataGridを使用しています。
列ヘッダーにコンテキスト メニューを追加しましたが、メニュー項目のクリック イベントでヘッダー テキストをコピーする方法がわかりません。
DataGrid.CurrentColumn を使用しようとしましたが、null です
どうもありがとう !
選択したセルを使用して列ヘッダーを取得してみてください:
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());
}
}
}
}