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