保留字符串结构的Datagrid复制

4

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

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

然而,当我复制一行时,我再次获得了UINT数字,而不是我想要的十六进制格式。有没有方法来保留字符串格式?我已经研究过CopyingRowClipboardContent,但我不太确定如何正确使用此事件处理程序。任何帮助?

1个回答

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);
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接