2012-12-14 11 views
9

Đối với WPF, Data Grid Tôi cố gắng để sao chép vào clipboard dữ liệu văn bản tùy chỉnh của tôi, sau khi Ctrl+C nỗ lực đa dạng để sử dụng ghi đè OnCopyingRowClipboardContent(DataGridRowClipboardEventArgs args) hoặc CopingRowClipboardContent event, không giúp đỡ.WPF DataGrid, Copy to Clipboard sau Ctrl + C, OnCopyingRowClipboardContent

Clip tạm thời có văn bản hàng trống hoặc tiêu chuẩn, nhưng không phải là nội dung tôi muốn đặt ở đó. Ví dụ

protected override void OnCopyingRowClipboardContent(DataGridRowClipboardEventArgs args) 
{ 
    Clipboard.SetText("Abc-hello"); 
    bool b1 = Clipboard.ContainsText(); 
    string s1 = Clipboard.GetText(); 
} 

s1 được mong muốn văn bản, nhưng sau khi đi ra ngoài của phương pháp này vào clipboard được sản phẩm nào. Bất kỳ ý tưởng nào nếu ai có thể giải quyết vấn đề này?

Trả lời

3

Bạn cần phải thiết lập thuộc tính ClipboardRowContent của DataGridRowClipboardEventArgs

static void dataGrid_CopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e) 
{ 
    e.ClipboardRowContent.Clear(); 
    e.ClipboardRowContent.Add(new DataGridClipboardCellContent(e.Item, (sender as DataGrid).Columns[0], "Abc-hello")); 
} 
9

cách chính xác là thêm vào lưới XAML khách sạn này

ClipboardCopyMode="ExcludeHeader" 

và cho mỗi thuộc tính bạn muốn sao chép thêm XAML này

<DataGridTemplateColumn ClipboardContentBinding="{Binding XXXXXX} ..... 

bước facultative khác là triển khai sự kiện dataGrid CopyingRowClipboardContent để sửa đổi dữ liệu clipoard