//---------------------------------------------------------------------------
//
// 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;
}
}