Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / DataGridLength.cs / 1305600 / DataGridLength.cs
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Globalization;
using System.Windows;
using MS.Internal;
namespace System.Windows.Controls
{
///
/// DataGridLength is the type used for various length properties in DataGrid
/// that support a variety of descriptive sizing modes in addition to numerical
/// values.
///
[TypeConverter(typeof(DataGridLengthConverter))]
public struct DataGridLength : IEquatable
{
#region Constructors
///
/// Initializes as an absolute value in pixels.
///
///
/// Specifies the number of 'device-independent pixels' (96 pixels-per-inch).
///
///
/// If pixels parameter is double.NaN
/// or pixels parameter is double.NegativeInfinity
/// or pixels parameter is double.PositiveInfinity .
///
public DataGridLength(double pixels)
: this(pixels, DataGridLengthUnitType.Pixel)
{
}
///
/// Initializes to a specified value and unit.
///
/// The value to hold.
/// The unit of value .
///
/// value is ignored unless type is
/// DataGridLengthUnitType.Pixel or
/// DataGridLengthUnitType.Star
///
///
/// If value parameter is double.NaN
/// or value parameter is double.NegativeInfinity
/// or value parameter is double.PositiveInfinity .
///
public DataGridLength(double value, DataGridLengthUnitType type)
: this(value, type, (type == DataGridLengthUnitType.Pixel ? value : Double.NaN), (type == DataGridLengthUnitType.Pixel ? value : Double.NaN))
{
}
///
/// Initializes to a specified value and unit.
///
/// The value to hold.
/// The unit of value .
///
///
///
/// value is ignored unless type is
/// DataGridLengthUnitType.Pixel or
/// DataGridLengthUnitType.Star
///
///
/// If value parameter is double.NaN
/// or value parameter is double.NegativeInfinity
/// or value parameter is double.PositiveInfinity .
///
public DataGridLength(double value, DataGridLengthUnitType type, double desiredValue, double displayValue)
{
if (DoubleUtil.IsNaN(value) || Double.IsInfinity(value))
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_Infinity),
"value");
}
if (type != DataGridLengthUnitType.Auto &&
type != DataGridLengthUnitType.Pixel &&
type != DataGridLengthUnitType.Star &&
type != DataGridLengthUnitType.SizeToCells &&
type != DataGridLengthUnitType.SizeToHeader)
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_InvalidType),
"type");
}
if (Double.IsInfinity(desiredValue))
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_Infinity),
"desiredValue");
}
if (Double.IsInfinity(displayValue))
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_Infinity),
"displayValue");
}
_unitValue = (type == DataGridLengthUnitType.Auto) ? AutoValue : value;
_unitType = type;
_desiredValue = desiredValue;
_displayValue = displayValue;
}
#endregion Constructors
#region Public Methods
///
/// Overloaded operator, compares 2 DataGridLength's.
///
/// first DataGridLength to compare.
/// second DataGridLength to compare.
/// true if specified DataGridLengths have same value
/// and unit type.
public static bool operator ==(DataGridLength gl1, DataGridLength gl2)
{
return gl1.UnitType == gl2.UnitType
&& gl1.Value == gl2.Value
&& ((gl1.DesiredValue == gl2.DesiredValue) || (DoubleUtil.IsNaN(gl1.DesiredValue) && DoubleUtil.IsNaN(gl2.DesiredValue)))
&& ((gl1.DisplayValue == gl2.DisplayValue) || (DoubleUtil.IsNaN(gl1.DisplayValue) && DoubleUtil.IsNaN(gl2.DisplayValue)));
}
///
/// Overloaded operator, compares 2 DataGridLength's.
///
/// first DataGridLength to compare.
/// second DataGridLength to compare.
/// true if specified DataGridLengths have either different value or
/// unit type.
public static bool operator !=(DataGridLength gl1, DataGridLength gl2)
{
return gl1.UnitType != gl2.UnitType
|| gl1.Value != gl2.Value
|| ((gl1.DesiredValue != gl2.DesiredValue) && !(DoubleUtil.IsNaN(gl1.DesiredValue) && DoubleUtil.IsNaN(gl2.DesiredValue)))
|| ((gl1.DisplayValue != gl2.DisplayValue) && !(DoubleUtil.IsNaN(gl1.DisplayValue) && DoubleUtil.IsNaN(gl2.DisplayValue)));
}
///
/// Compares this instance of DataGridLength with another object.
///
/// Reference to an object for comparison.
/// true if this DataGridLength instance has the same value
/// and unit type as oCompare.
public override bool Equals(object obj)
{
if (obj is DataGridLength)
{
DataGridLength l = (DataGridLength)obj;
return this == l;
}
else
{
return false;
}
}
///
/// Compares this instance of DataGridLength with another instance.
///
/// Grid length instance to compare.
/// true if this DataGridLength instance has the same value
/// and unit type as gridLength.
public bool Equals(DataGridLength other)
{
return this == other;
}
///
///
///
///
public override int GetHashCode()
{
return (int)_unitValue + (int)_unitType + (int)_desiredValue + (int)_displayValue;
}
///
/// Returns true if this DataGridLength instance holds
/// an absolute (pixel) value.
///
public bool IsAbsolute
{
get
{
return _unitType == DataGridLengthUnitType.Pixel;
}
}
///
/// Returns true if this DataGridLength instance is
/// automatic (not specified).
///
public bool IsAuto
{
get
{
return _unitType == DataGridLengthUnitType.Auto;
}
}
///
/// Returns true if this DataGridLength instance holds a weighted proportion
/// of available space.
///
public bool IsStar
{
get
{
return _unitType == DataGridLengthUnitType.Star;
}
}
///
/// Returns true if this instance is to size to the cells of a column or row.
///
public bool IsSizeToCells
{
get { return _unitType == DataGridLengthUnitType.SizeToCells; }
}
///
/// Returns true if this instance is to size to the header of a column or row.
///
public bool IsSizeToHeader
{
get { return _unitType == DataGridLengthUnitType.SizeToHeader; }
}
///
/// Returns value part of this DataGridLength instance.
///
public double Value
{
get
{
return (_unitType == DataGridLengthUnitType.Auto) ? AutoValue : _unitValue;
}
}
///
/// Returns unit type of this DataGridLength instance.
///
public DataGridLengthUnitType UnitType
{
get
{
return _unitType;
}
}
///
/// Returns the desired value of this instance.
///
public double DesiredValue
{
get
{
return _desiredValue;
}
}
///
/// Returns the display value of this instance.
///
public double DisplayValue
{
get
{
return _displayValue;
}
}
///
/// Returns the string representation of this object.
///
public override string ToString()
{
return DataGridLengthConverter.ConvertToString(this, CultureInfo.InvariantCulture);
}
#endregion
#region Pre-defined values
///
/// Returns a value initialized to mean "auto."
///
public static DataGridLength Auto
{
get { return _auto; }
}
///
/// Returns a value initialized to mean "size to cells."
///
public static DataGridLength SizeToCells
{
get { return _sizeToCells; }
}
///
/// Returns a value initialized to mean "size to header."
///
public static DataGridLength SizeToHeader
{
get { return _sizeToHeader; }
}
#endregion
#region Implicit Conversions
///
/// Allows for values of type double to be implicitly converted
/// to DataGridLength.
///
/// The number of pixels to represent.
/// The DataGridLength representing the requested number of pixels.
public static implicit operator DataGridLength(double value)
{
return new DataGridLength(value);
}
#endregion
#region Fields
private double _unitValue; // unit value storage
private DataGridLengthUnitType _unitType; // unit type storage
private double _desiredValue; // desired value storage
private double _displayValue; // display value storage
private const double AutoValue = 1.0;
// static instance of Auto DataGridLength
private static readonly DataGridLength _auto = new DataGridLength(AutoValue, DataGridLengthUnitType.Auto, 0d, 0d);
private static readonly DataGridLength _sizeToCells = new DataGridLength(AutoValue, DataGridLengthUnitType.SizeToCells, 0d, 0d);
private static readonly DataGridLength _sizeToHeader = new DataGridLength(AutoValue, DataGridLengthUnitType.SizeToHeader, 0d, 0d);
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//---------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Globalization;
using System.Windows;
using MS.Internal;
namespace System.Windows.Controls
{
///
/// DataGridLength is the type used for various length properties in DataGrid
/// that support a variety of descriptive sizing modes in addition to numerical
/// values.
///
[TypeConverter(typeof(DataGridLengthConverter))]
public struct DataGridLength : IEquatable
{
#region Constructors
///
/// Initializes as an absolute value in pixels.
///
///
/// Specifies the number of 'device-independent pixels' (96 pixels-per-inch).
///
///
/// If pixels parameter is double.NaN
/// or pixels parameter is double.NegativeInfinity
/// or pixels parameter is double.PositiveInfinity .
///
public DataGridLength(double pixels)
: this(pixels, DataGridLengthUnitType.Pixel)
{
}
///
/// Initializes to a specified value and unit.
///
/// The value to hold.
/// The unit of value .
///
/// value is ignored unless type is
/// DataGridLengthUnitType.Pixel or
/// DataGridLengthUnitType.Star
///
///
/// If value parameter is double.NaN
/// or value parameter is double.NegativeInfinity
/// or value parameter is double.PositiveInfinity .
///
public DataGridLength(double value, DataGridLengthUnitType type)
: this(value, type, (type == DataGridLengthUnitType.Pixel ? value : Double.NaN), (type == DataGridLengthUnitType.Pixel ? value : Double.NaN))
{
}
///
/// Initializes to a specified value and unit.
///
/// The value to hold.
/// The unit of value .
///
///
///
/// value is ignored unless type is
/// DataGridLengthUnitType.Pixel or
/// DataGridLengthUnitType.Star
///
///
/// If value parameter is double.NaN
/// or value parameter is double.NegativeInfinity
/// or value parameter is double.PositiveInfinity .
///
public DataGridLength(double value, DataGridLengthUnitType type, double desiredValue, double displayValue)
{
if (DoubleUtil.IsNaN(value) || Double.IsInfinity(value))
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_Infinity),
"value");
}
if (type != DataGridLengthUnitType.Auto &&
type != DataGridLengthUnitType.Pixel &&
type != DataGridLengthUnitType.Star &&
type != DataGridLengthUnitType.SizeToCells &&
type != DataGridLengthUnitType.SizeToHeader)
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_InvalidType),
"type");
}
if (Double.IsInfinity(desiredValue))
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_Infinity),
"desiredValue");
}
if (Double.IsInfinity(displayValue))
{
throw new ArgumentException(
SR.Get(SRID.DataGridLength_Infinity),
"displayValue");
}
_unitValue = (type == DataGridLengthUnitType.Auto) ? AutoValue : value;
_unitType = type;
_desiredValue = desiredValue;
_displayValue = displayValue;
}
#endregion Constructors
#region Public Methods
///
/// Overloaded operator, compares 2 DataGridLength's.
///
/// first DataGridLength to compare.
/// second DataGridLength to compare.
/// true if specified DataGridLengths have same value
/// and unit type.
public static bool operator ==(DataGridLength gl1, DataGridLength gl2)
{
return gl1.UnitType == gl2.UnitType
&& gl1.Value == gl2.Value
&& ((gl1.DesiredValue == gl2.DesiredValue) || (DoubleUtil.IsNaN(gl1.DesiredValue) && DoubleUtil.IsNaN(gl2.DesiredValue)))
&& ((gl1.DisplayValue == gl2.DisplayValue) || (DoubleUtil.IsNaN(gl1.DisplayValue) && DoubleUtil.IsNaN(gl2.DisplayValue)));
}
///
/// Overloaded operator, compares 2 DataGridLength's.
///
/// first DataGridLength to compare.
/// second DataGridLength to compare.
/// true if specified DataGridLengths have either different value or
/// unit type.
public static bool operator !=(DataGridLength gl1, DataGridLength gl2)
{
return gl1.UnitType != gl2.UnitType
|| gl1.Value != gl2.Value
|| ((gl1.DesiredValue != gl2.DesiredValue) && !(DoubleUtil.IsNaN(gl1.DesiredValue) && DoubleUtil.IsNaN(gl2.DesiredValue)))
|| ((gl1.DisplayValue != gl2.DisplayValue) && !(DoubleUtil.IsNaN(gl1.DisplayValue) && DoubleUtil.IsNaN(gl2.DisplayValue)));
}
///
/// Compares this instance of DataGridLength with another object.
///
/// Reference to an object for comparison.
/// true if this DataGridLength instance has the same value
/// and unit type as oCompare.
public override bool Equals(object obj)
{
if (obj is DataGridLength)
{
DataGridLength l = (DataGridLength)obj;
return this == l;
}
else
{
return false;
}
}
///
/// Compares this instance of DataGridLength with another instance.
///
/// Grid length instance to compare.
/// true if this DataGridLength instance has the same value
/// and unit type as gridLength.
public bool Equals(DataGridLength other)
{
return this == other;
}
///
///
///
///
public override int GetHashCode()
{
return (int)_unitValue + (int)_unitType + (int)_desiredValue + (int)_displayValue;
}
///
/// Returns true if this DataGridLength instance holds
/// an absolute (pixel) value.
///
public bool IsAbsolute
{
get
{
return _unitType == DataGridLengthUnitType.Pixel;
}
}
///
/// Returns true if this DataGridLength instance is
/// automatic (not specified).
///
public bool IsAuto
{
get
{
return _unitType == DataGridLengthUnitType.Auto;
}
}
///
/// Returns true if this DataGridLength instance holds a weighted proportion
/// of available space.
///
public bool IsStar
{
get
{
return _unitType == DataGridLengthUnitType.Star;
}
}
///
/// Returns true if this instance is to size to the cells of a column or row.
///
public bool IsSizeToCells
{
get { return _unitType == DataGridLengthUnitType.SizeToCells; }
}
///
/// Returns true if this instance is to size to the header of a column or row.
///
public bool IsSizeToHeader
{
get { return _unitType == DataGridLengthUnitType.SizeToHeader; }
}
///
/// Returns value part of this DataGridLength instance.
///
public double Value
{
get
{
return (_unitType == DataGridLengthUnitType.Auto) ? AutoValue : _unitValue;
}
}
///
/// Returns unit type of this DataGridLength instance.
///
public DataGridLengthUnitType UnitType
{
get
{
return _unitType;
}
}
///
/// Returns the desired value of this instance.
///
public double DesiredValue
{
get
{
return _desiredValue;
}
}
///
/// Returns the display value of this instance.
///
public double DisplayValue
{
get
{
return _displayValue;
}
}
///
/// Returns the string representation of this object.
///
public override string ToString()
{
return DataGridLengthConverter.ConvertToString(this, CultureInfo.InvariantCulture);
}
#endregion
#region Pre-defined values
///
/// Returns a value initialized to mean "auto."
///
public static DataGridLength Auto
{
get { return _auto; }
}
///
/// Returns a value initialized to mean "size to cells."
///
public static DataGridLength SizeToCells
{
get { return _sizeToCells; }
}
///
/// Returns a value initialized to mean "size to header."
///
public static DataGridLength SizeToHeader
{
get { return _sizeToHeader; }
}
#endregion
#region Implicit Conversions
///
/// Allows for values of type double to be implicitly converted
/// to DataGridLength.
///
/// The number of pixels to represent.
/// The DataGridLength representing the requested number of pixels.
public static implicit operator DataGridLength(double value)
{
return new DataGridLength(value);
}
#endregion
#region Fields
private double _unitValue; // unit value storage
private DataGridLengthUnitType _unitType; // unit type storage
private double _desiredValue; // desired value storage
private double _displayValue; // display value storage
private const double AutoValue = 1.0;
// static instance of Auto DataGridLength
private static readonly DataGridLength _auto = new DataGridLength(AutoValue, DataGridLengthUnitType.Auto, 0d, 0d);
private static readonly DataGridLength _sizeToCells = new DataGridLength(AutoValue, DataGridLengthUnitType.SizeToCells, 0d, 0d);
private static readonly DataGridLength _sizeToHeader = new DataGridLength(AutoValue, DataGridLengthUnitType.SizeToHeader, 0d, 0d);
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BindUriHelper.cs
- XmlFormatExtensionAttribute.cs
- Keyboard.cs
- SystemIPGlobalProperties.cs
- EncodingTable.cs
- MetafileHeaderWmf.cs
- PolyBezierSegment.cs
- XslNumber.cs
- CompareInfo.cs
- ResetableIterator.cs
- ChildChangedEventArgs.cs
- Keywords.cs
- ExpressionBindings.cs
- ValueChangedEventManager.cs
- HttpValueCollection.cs
- MouseButton.cs
- QuotedPrintableStream.cs
- GraphicsContext.cs
- DataGridViewColumnHeaderCell.cs
- SelectedDatesCollection.cs
- Point3DCollection.cs
- BitArray.cs
- ProfileModule.cs
- LineSegment.cs
- DependsOnAttribute.cs
- ParseChildrenAsPropertiesAttribute.cs
- DbProviderConfigurationHandler.cs
- ClientUrlResolverWrapper.cs
- ComAdminInterfaces.cs
- RequiredFieldValidator.cs
- CrossSiteScriptingValidation.cs
- ItemsControl.cs
- StateDesigner.CommentLayoutGlyph.cs
- TextBoxLine.cs
- CaseKeyBox.ViewModel.cs
- AtlasWeb.Designer.cs
- JsonDataContract.cs
- xmlsaver.cs
- AudioFormatConverter.cs
- GlyphingCache.cs
- XmlDocumentFragment.cs
- ResXFileRef.cs
- ListViewSortEventArgs.cs
- VisualState.cs
- HebrewNumber.cs
- ToolStripDropDownClosingEventArgs.cs
- RC2CryptoServiceProvider.cs
- XamlInt32CollectionSerializer.cs
- WithParamAction.cs
- TreeViewCancelEvent.cs
- XslAst.cs
- Timer.cs
- ADMembershipProvider.cs
- ParserHooks.cs
- MenuEventArgs.cs
- ProcessingInstructionAction.cs
- TraceProvider.cs
- StructuralObject.cs
- ListView.cs
- EncryptedKeyIdentifierClause.cs
- DirectoryInfo.cs
- Selection.cs
- SourceElementsCollection.cs
- EventSinkHelperWriter.cs
- SiteMapSection.cs
- HttpTransportManager.cs
- AutomationElementCollection.cs
- BevelBitmapEffect.cs
- ButtonBaseAdapter.cs
- Graph.cs
- CacheSection.cs
- IndexedString.cs
- DefaultEventAttribute.cs
- COM2Properties.cs
- Context.cs
- Console.cs
- SecurityUtils.cs
- RowVisual.cs
- SatelliteContractVersionAttribute.cs
- EndpointDiscoveryMetadata.cs
- OdbcCommand.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- FontFamilyConverter.cs
- InvalidOperationException.cs
- BitArray.cs
- HttpServerVarsCollection.cs
- EntityDataSourceWizardForm.cs
- PermissionSetEnumerator.cs
- PropertyBuilder.cs
- WorkflowPageSetupDialog.cs
- SqlUserDefinedAggregateAttribute.cs
- oledbconnectionstring.cs
- Compiler.cs
- SourceFilter.cs
- ManagedWndProcTracker.cs
- SignatureResourcePool.cs
- Pen.cs
- URI.cs
- HyperLinkField.cs
- CaretElement.cs