带有自定义标头的Wpf DataGrid ClipboardCopyMode ="IncludeHeader"

met*_*key 6 wpf wpfdatagrid

我有一个WPF表,它有一个自定义标题(基于StackPanel),其中包含一个按钮,显示和处理设置列的单位.这很好用,但我希望能够将数据复制到剪贴板,包括标题.

<DataGrid ClipboardCopyMode="IncludeHeader"
...
<DataGridTextColumn Header="Some Header" Binding={Binding Path=SomeValue}/>
<DataGridTextColumn Binding={Binding Path=OtherValue, Converter="{StaticResource unitsConverter}">
<DataGridTextColumn.Header>
<StackPanel>
<TextBlock Text="Period" />
<Button ... />
</Stackpanel>
Run Code Online (Sandbox Code Playgroud)

问题是具有自定义标头的列复制到剪贴板

SomeHeader System.Windows.Controls.StackPanel
v1         33
Run Code Online (Sandbox Code Playgroud)

有没有办法在使用自定义标题时更改标题的打印文本?

小智 7

我寻找解决方案然后结束我的自定义标头控件的子类只是为了覆盖,ToString()以便ClipboardCopyMode="IncludeHeader"复制正确的文本.

就我而言,我在标题中使用了一个图像:

class HeaderImage : Image
{
    public override string ToString()
    {
        return Tag.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML:

 <DataGridCheckBoxColumn.Header>
     <elements:HeaderImage Source="..\Resources\skull.png" Width="15" Tag="Deprecated"/>
 </DataGridCheckBoxColumn.Header>
Run Code Online (Sandbox Code Playgroud)

现在复制/粘贴数据已经"弃用"而不是System.Windows.Controls.Image.我相信你也可以这样做StackPanel.我使用Tag作为标题文本,因为它很方便