2012-06-19 73 views
4

我有一個datagrid,其中我已經修改了他們的字符串格式的某些列,如此,它需要一個UINT32數字並輸出其十六進制格式。Datagrid複製,同時保留字符串結構

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

但是,當我複製一行時,我再次得到UINT編號,而不是十六進制,因爲我會喜歡。有沒有辦法保存字符串格式?我研究過CopyingRowClipboardContent,但我不太清楚如何正確使用這個事件處理程序。任何幫助?

回答

0

你可以嘗試做這樣的事情:

1)物業getStartS類型的字符串添加到您的類和吸氣,你可以格式化字符串。

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); 
      } 
     } 
相關問題