Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / FreezableOperations.cs / 1305600 / FreezableOperations.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: FreezableOperations class definition.
//
// History:
// 2005/02/02 : [....] - Created
//
//---------------------------------------------------------------------------
using System;
using System.Windows;
using MS.Internal.PresentationCore;
namespace MS.Internal
{
///
/// Internal static class which provides helper methods for common
/// Freezable operations.
///
[FriendAccessAllowed] // Built into Core, also used by Framework.
internal static class FreezableOperations
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
//------------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
///
/// A null-safe wrapper around Freezable.Clone(). (If a null
/// is encountered it returns null.)
///
internal static Freezable Clone(Freezable freezable)
{
if (freezable == null)
{
return null;
}
return freezable.Clone();
}
///
/// Semantically equivilent to Freezable.Clone().Freeze() except that
/// GetAsFrozen avoids copying any portions of the Freezable graph
/// which are already frozen.
///
public static Freezable GetAsFrozen(Freezable freezable)
{
if (freezable == null)
{
return null;
}
return freezable.GetAsFrozen();
}
///
/// If freezable is already frozen, it returns freezable
/// If freezable is not frozen, it returns a copy that is frozen if possible
///
internal static Freezable GetAsFrozenIfPossible(Freezable freezable)
{
if (freezable == null)
{
return null;
}
if (freezable.CanFreeze)
{
freezable = freezable.GetAsFrozen();
}
return freezable;
}
///
/// Moves the specified changed handler from the old value
/// to the new value correctly no-oping nulls. This is useful
/// for non-Freezables which expose a Freezable property.
///
internal static void PropagateChangedHandlers(
Freezable oldValue,
Freezable newValue,
EventHandler changedHandler)
{
if (newValue != null && !newValue.IsFrozen)
{
newValue.Changed += changedHandler;
}
if (oldValue != null && !oldValue.IsFrozen)
{
oldValue.Changed -= changedHandler;
}
}
#endregion Internal Methods
}
}
// 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
- StateMachine.cs
- TabControl.cs
- XPathNodeHelper.cs
- Stackframe.cs
- ReadOnlyNameValueCollection.cs
- WebPartUserCapability.cs
- EntityDataSourceSelectingEventArgs.cs
- ClassDataContract.cs
- QilFactory.cs
- CatalogZoneBase.cs
- LayoutTable.cs
- ImageConverter.cs
- HeaderCollection.cs
- PrintDialogException.cs
- FullTrustAssembly.cs
- MSAANativeProvider.cs
- SQLDateTime.cs
- WaitHandle.cs
- QueryableFilterUserControl.cs
- DecoderReplacementFallback.cs
- AbandonedMutexException.cs
- InputEventArgs.cs
- safesecurityhelperavalon.cs
- AsymmetricCryptoHandle.cs
- SqlFormatter.cs
- XmlSchemaAnyAttribute.cs
- TablePattern.cs
- XmlNode.cs
- WindowsClaimSet.cs
- WhitespaceReader.cs
- SerializationHelper.cs
- CallSiteHelpers.cs
- XmlSchemaGroupRef.cs
- SqlFunctionAttribute.cs
- ConstructorBuilder.cs
- BaseServiceProvider.cs
- ChannelSettingsElement.cs
- UpdatePanelTriggerCollection.cs
- MetadataProperty.cs
- ExpressionDumper.cs
- PasswordTextNavigator.cs
- XPSSignatureDefinition.cs
- ListView.cs
- DPTypeDescriptorContext.cs
- ReferenceSchema.cs
- TdsEnums.cs
- TransformerConfigurationWizardBase.cs
- XmlCharCheckingWriter.cs
- DebugView.cs
- UserControlCodeDomTreeGenerator.cs
- FormsAuthentication.cs
- SqlBulkCopyColumnMappingCollection.cs
- DecimalConstantAttribute.cs
- DataGridCell.cs
- FloatUtil.cs
- CommandSet.cs
- Byte.cs
- NativeMethods.cs
- ResourceManagerWrapper.cs
- SystemResourceKey.cs
- TextElementEnumerator.cs
- AsynchronousChannelMergeEnumerator.cs
- MenuItemStyleCollection.cs
- RepeaterItem.cs
- IfJoinedCondition.cs
- LabelTarget.cs
- ComboBoxHelper.cs
- SAPIEngineTypes.cs
- XmlSchemaComplexContentExtension.cs
- BinHexEncoding.cs
- Int32AnimationBase.cs
- FaultImportOptions.cs
- DefaultValidator.cs
- Sql8ExpressionRewriter.cs
- SafeMILHandle.cs
- unitconverter.cs
- NotSupportedException.cs
- CategoryAttribute.cs
- TokenizerHelper.cs
- CompareValidator.cs
- EntityTypeEmitter.cs
- DataAdapter.cs
- SystemSounds.cs
- Avt.cs
- StartFileNameEditor.cs
- BinaryCommonClasses.cs
- ApplicationDirectory.cs
- Matrix3D.cs
- HttpListenerException.cs
- EntityTypeEmitter.cs
- TextBoxView.cs
- SQLInt16Storage.cs
- QilDataSource.cs
- Compiler.cs
- StatusStrip.cs
- MobileControlsSectionHandler.cs
- Bold.cs
- ZipFileInfo.cs
- CommandBindingCollection.cs
- EventLogPermissionEntryCollection.cs