//--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; namespace ExtendedGrid.Microsoft.Windows.Controls { /// /// This class encapsulates a selected row information necessary for CopyingRowClipboardContent event /// public class DataGridRowClipboardEventArgs : EventArgs { /// /// Creates DataGridRowClipboardEventArgs object initializing the properties. /// /// /// /// /// public DataGridRowClipboardEventArgs(object item, int startColumnDisplayIndex, int endColumnDisplayIndex, bool isColumnHeadersRow) { _item = item; _startColumnDisplayIndex = startColumnDisplayIndex; _endColumnDisplayIndex = endColumnDisplayIndex; _isColumnHeadersRow = isColumnHeadersRow; } internal DataGridRowClipboardEventArgs(object item, int startColumnDisplayIndex, int endColumnDisplayIndex, bool isColumnHeadersRow, int rowIndexHint) : this(item, startColumnDisplayIndex, endColumnDisplayIndex, isColumnHeadersRow) { _rowIndexHint = rowIndexHint; } /// /// DataGrid row item for which we prepare ClipboardRowContent /// public object Item { get { return _item; } } /// /// This list should be used to modify, add ot remove a cell content before it gets stored into the clipboard. /// public List ClipboardRowContent { get { if (_clipboardRowContent == null) { _clipboardRowContent = new List(); } return _clipboardRowContent; } } /// /// This method serialize ClipboardRowContent list into string using the specified format. /// /// /// public string FormatClipboardCellValues(string format) { StringBuilder sb = new StringBuilder(); int count = ClipboardRowContent.Count; for (int i = 0; i < count; i++) { ClipboardHelper.FormatCell(ClipboardRowContent[i].Content, i == 0 /* firstCell */, i == count - 1 /* lastCell */, sb, format); } return sb.ToString(); } /// /// Represents the DisplayIndex of the first selected column /// public int StartColumnDisplayIndex { get { return _startColumnDisplayIndex; } } /// /// Represents the DisplayIndex of the last selected column /// public int EndColumnDisplayIndex { get { return _endColumnDisplayIndex; } } /// /// This property is true when the ClipboardRowContent represents column headers. In this case Item is null. /// public bool IsColumnHeadersRow { get { return _isColumnHeadersRow; } } /// /// If the row index was known at creation time, this will be non-negative. /// internal int RowIndexHint { get { return _rowIndexHint; } } private int _startColumnDisplayIndex; private int _endColumnDisplayIndex; private object _item; private bool _isColumnHeadersRow; private List _clipboardRowContent; private int _rowIndexHint = -1; } }