Datagrid复制,同时保留字符串结构

时间:2012-06-19 23:20:27

标签: wpf string copy format

我有一个数据网格,其中我有一些列,我已经修改了它们的字符串格式,例如这个,它接收一个UINT32编号并输出其十六进制格式。

<WpfToolkit:DataGridTextColumn Binding="{Binding Path=getStart, Mode=OneWay, StringFormat='{}{0:x4}'}" Header="Starting Address"  Width="13*"/>

但是当我复制一行时,我会再次得到UINT号而不是十六进制号,正如我所希望的那样。有没有办法保留字符串格式?我查看了CopyingRowClipboardContent,但我不太确定如何正确使用此事件处理程序。有什么帮助吗?

1 个答案:

答案 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);
            }
        }
相关问题