//--------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; namespace ExtendedGrid.Microsoft.Windows.Controls { /// /// This structure encapsulate the cell information necessary when clipboard content is prepared /// public struct DataGridClipboardCellContent { /// /// Creates a new DataGridClipboardCellValue structure containing information about DataGrid cell /// /// DataGrid row item containing the cell /// DataGridColumn containing the cell /// DataGrid cell value public DataGridClipboardCellContent(object item, DataGridColumn column, object content) { _item = item; _column = column; _content = content; } /// /// DataGrid row item containing the cell /// public object Item { get { return _item; } } /// /// DataGridColumn containing the cell /// public DataGridColumn Column { get { return _column; } } /// /// Cell content /// public object Content { get { return _content; } } /// /// Field-by-field comparison to avoid reflection-based ValueType.Equals /// /// /// True iff this and data are equal public override bool Equals(object data) { DataGridClipboardCellContent clipboardCellContent; if (data is DataGridClipboardCellContent) { clipboardCellContent = (DataGridClipboardCellContent)data; return (_column == clipboardCellContent._column) && (_content == clipboardCellContent._content) && (_item == clipboardCellContent._item); } return false; } /// /// Return a deterministic hash code /// /// Hash value public override int GetHashCode() { return _column.GetHashCode() ^ _content.GetHashCode() ^ _item.GetHashCode(); } /// /// Field-by-field comparison to avoid reflection-based ValueType.Equals /// /// /// /// True iff clipboardCellContent1 and clipboardCellContent2 are equal public static bool operator ==( DataGridClipboardCellContent clipboardCellContent1, DataGridClipboardCellContent clipboardCellContent2) { return (clipboardCellContent1._column == clipboardCellContent2._column) && (clipboardCellContent1._content == clipboardCellContent2._content) && (clipboardCellContent1._item == clipboardCellContent2._item); } /// /// Field-by-field comparison to avoid reflection-based ValueType.Equals /// /// /// /// True iff clipboardCellContent1 and clipboardCellContent2 are NOT equal public static bool operator !=( DataGridClipboardCellContent clipboardCellContent1, DataGridClipboardCellContent clipboardCellContent2) { return (clipboardCellContent1._column != clipboardCellContent2._column) || (clipboardCellContent1._content != clipboardCellContent2._content) || (clipboardCellContent1._item != clipboardCellContent2._item); } private object _item; private DataGridColumn _column; private object _content; } }