Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / UncommonField.cs / 1305600 / UncommonField.cs
using System; using System.Diagnostics; using System.Security.Permissions; using MS.Internal.WindowsBase; // for FriendAccessAllowed namespace System.Windows { ////// /// //CASRemoval:[StrongNameIdentityPermissionAttribute(SecurityAction.InheritanceDemand, PublicKey=Microsoft.Internal.BuildInfo.WCP_PUBLIC_KEY_STRING)] [FriendAccessAllowed] // Built into Base, used by Core and Framework internal class UncommonField{ /// /// Create a new UncommonField. /// public UncommonField() : this(default(T)) { } ////// Create a new UncommonField. /// /// The default value of the field. public UncommonField(T defaultValue) { _defaultValue = defaultValue; _hasBeenSet = false; lock (DependencyProperty.Synchronized) { _globalIndex = DependencyProperty.GetUniqueGlobalIndex(null, null); DependencyProperty.RegisteredPropertyList.Add(); } } ////// Write the given value onto a DependencyObject instance. /// /// The DependencyObject on which to set the value. /// The value to set. public void SetValue(DependencyObject instance, T value) { if (instance != null) { EntryIndex entryIndex = instance.LookupEntry(_globalIndex); // Set the value if it's not the default, otherwise remove the value. if (!object.ReferenceEquals(value, _defaultValue)) { instance.SetEffectiveValue(entryIndex, null /* dp */, _globalIndex, null /* metadata */, value, BaseValueSourceInternal.Local); _hasBeenSet = true; } else { instance.UnsetEffectiveValue(entryIndex, null /* dp */, null /* metadata */); } } else { throw new ArgumentNullException("instance"); } } ////// Read the value of this field on a DependencyObject instance. /// /// The DependencyObject from which to get the value. ///public T GetValue(DependencyObject instance) { if (instance != null) { if (_hasBeenSet) { EntryIndex entryIndex = instance.LookupEntry(_globalIndex); if (entryIndex.Found) { object value = instance.EffectiveValues[entryIndex.Index].LocalValue; if (value != DependencyProperty.UnsetValue) { return (T)value; } } return _defaultValue; } else { return _defaultValue; } } else { throw new ArgumentNullException("instance"); } } /// /// Clear this field from the given DependencyObject instance. /// /// public void ClearValue(DependencyObject instance) { if (instance != null) { EntryIndex entryIndex = instance.LookupEntry(_globalIndex); instance.UnsetEffectiveValue(entryIndex, null /* dp */, null /* metadata */); } else { throw new ArgumentNullException("instance"); } } internal int GlobalIndex { get { return _globalIndex; } } #region Private Fields private T _defaultValue; private int _globalIndex; private bool _hasBeenSet; #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
- EnumDataContract.cs
- FlowchartDesigner.xaml.cs
- DataRelationPropertyDescriptor.cs
- Models.cs
- MailBnfHelper.cs
- QilIterator.cs
- DataGridViewCellParsingEventArgs.cs
- OracleParameterBinding.cs
- SqlCaseSimplifier.cs
- AtomMaterializerLog.cs
- DefaultTraceListener.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- WhileDesigner.cs
- AbstractExpressions.cs
- AttachmentService.cs
- AlgoModule.cs
- recordstate.cs
- InputScope.cs
- Storyboard.cs
- TemplateControl.cs
- DataGridViewCellFormattingEventArgs.cs
- HttpCapabilitiesEvaluator.cs
- RowCache.cs
- SID.cs
- CompiledScopeCriteria.cs
- PriorityChain.cs
- MetadataCache.cs
- RuntimeConfigurationRecord.cs
- HyperLinkColumn.cs
- TableSectionStyle.cs
- RelationHandler.cs
- ChannelPoolSettingsElement.cs
- relpropertyhelper.cs
- StateMachineSubscription.cs
- Assembly.cs
- PropertyEmitterBase.cs
- EqualityArray.cs
- RawKeyboardInputReport.cs
- Point3DAnimationUsingKeyFrames.cs
- DataGridLinkButton.cs
- XsdDuration.cs
- Rule.cs
- MorphHelper.cs
- Animatable.cs
- OLEDB_Enum.cs
- followingsibling.cs
- ReaderWriterLock.cs
- ErrorProvider.cs
- Stroke2.cs
- _FtpControlStream.cs
- HtmlSelectionListAdapter.cs
- DiscreteKeyFrames.cs
- StateChangeEvent.cs
- IISUnsafeMethods.cs
- ScrollProperties.cs
- ElementProxy.cs
- ScrollBar.cs
- MsmqUri.cs
- ScriptReferenceBase.cs
- CompilationUnit.cs
- TransformDescriptor.cs
- WrappedOptions.cs
- DynamicUpdateCommand.cs
- DoubleStorage.cs
- Assert.cs
- ArgumentNullException.cs
- ProtectedConfigurationSection.cs
- WebPartDisplayModeCollection.cs
- ComplusTypeValidator.cs
- WinEventQueueItem.cs
- PassportPrincipal.cs
- MembershipValidatePasswordEventArgs.cs
- AuthenticationConfig.cs
- TypeElement.cs
- DispatchWrapper.cs
- WebPartEditVerb.cs
- SmtpSection.cs
- ChannelAcceptor.cs
- CollectionViewSource.cs
- InvokeBinder.cs
- StringConverter.cs
- AutoFocusStyle.xaml.cs
- SiteMapPathDesigner.cs
- MarkupExtensionParser.cs
- Content.cs
- DesignTimeValidationFeature.cs
- ConstructorBuilder.cs
- ControlPropertyNameConverter.cs
- PatternMatcher.cs
- PropertyChangeTracker.cs
- _LoggingObject.cs
- MessagePropertyDescription.cs
- ServiceModelActivationSectionGroup.cs
- DBDataPermission.cs
- ApplicationInfo.cs
- LinkedResource.cs
- GetBrowserTokenRequest.cs
- DescriptionAttribute.cs
- DataGridViewAutoSizeModeEventArgs.cs
- StoreItemCollection.cs