4

このような文字列形式を変更した特定の列があるデータグリッドがあります。これは、UINT32数値を受け取り、その16進形式を出力します。

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

ただし、行をコピーすると、16進数ではなく、UINT番号が再び取得されます。文字列形式を保持する方法はありますか?CopyingRowClipboardContentを調べましたが、このイベントハンドラーを適切に使用する方法がよくわかりません。何か助けはありますか?

4

1 に答える 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"                                    
                                    />

または、2番目の解決策を試すことができます。

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);
            }
        }
于 2012-08-03T17:51:10.320 に答える