我有一个数据网格,其中我有一些列,我已经修改了它们的字符串格式,例如这个,它接收一个UINT32编号并输出其十六进制格式。
<WpfToolkit:DataGridTextColumn Binding="{Binding Path=getStart, Mode=OneWay, StringFormat='{}{0:x4}'}" Header="Starting Address" Width="13*"/>
但是当我复制一行时,我会再次得到UINT号而不是十六进制号,正如我所希望的那样。有没有办法保留字符串格式?我查看了CopyingRowClipboardContent,但我不太确定如何正确使用此事件处理程序。有什么帮助吗?
答案 0 :(得分:1)
您可以尝试做类似的事情:
1)将属性getStartS类型的字符串添加到您的类中,在getter中,您可以格式化您的字符串。
public class Foo
{
public int getStart { get; set; }
public string getStartS { get { return string.Format("{0:x4}", getStart); } }
}
2)在DataGrid列中,您可以绑定到getStartS属性,它将正常工作!
<DataGridTextColumn Binding="{Binding Path=getStartS}"
Header="Starting Address"
/>
或者您可以尝试第二种解决方案:
DataGrid列:
<DataGridTextColumn Binding="{Binding Path=getStart, Mode=OneWay, StringFormat='{}{0:x4}'}"
Header="Starting Address"
CopyingCellClipboardContent="DataGridTextColumn_CopyingCellClipboardContent"
/>
事件处理程序:
private void DataGridTextColumn_CopyingCellClipboardContent(object sender, DataGridCellClipboardEventArgs e)
{
if (e.Column.ClipboardContentBinding != null && !string.IsNullOrEmpty(e.Column.ClipboardContentBinding.StringFormat))
{
e.Content = string.Format(e.Column.ClipboardContentBinding.StringFormat, e.Content);
}
}