Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Windows / UncommonField.cs / 1 / 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"); } } #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
- httpapplicationstate.cs
- DoubleConverter.cs
- SafeMILHandle.cs
- LinqDataSourceUpdateEventArgs.cs
- MappingSource.cs
- QueryOperatorEnumerator.cs
- TraceRecord.cs
- AuthorizationRule.cs
- Condition.cs
- WorkflowViewStateService.cs
- TypeDelegator.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- TabItemAutomationPeer.cs
- ArrayElementGridEntry.cs
- DataGridViewRowPrePaintEventArgs.cs
- NullRuntimeConfig.cs
- ComplexTypeEmitter.cs
- TemplateBuilder.cs
- WebPartDisplayModeEventArgs.cs
- GlobalEventManager.cs
- IntAverageAggregationOperator.cs
- XmlILIndex.cs
- UnsafeNativeMethods.cs
- WebConfigurationHostFileChange.cs
- FamilyMap.cs
- KeyGestureValueSerializer.cs
- DbReferenceCollection.cs
- UserInitiatedNavigationPermission.cs
- SpellerHighlightLayer.cs
- CollectionViewGroup.cs
- DoubleLinkList.cs
- altserialization.cs
- Canvas.cs
- PackWebRequestFactory.cs
- HtmlImageAdapter.cs
- SQLInt64.cs
- NativeMethodsOther.cs
- DivideByZeroException.cs
- FileSystemEventArgs.cs
- Attributes.cs
- StandardToolWindows.cs
- WindowExtensionMethods.cs
- SoapIgnoreAttribute.cs
- XmlDataSourceView.cs
- ImagingCache.cs
- DecimalSumAggregationOperator.cs
- HtmlAnchor.cs
- PermissionSet.cs
- ItemsPresenter.cs
- PropertyFilterAttribute.cs
- WinFormsUtils.cs
- BinaryWriter.cs
- ConnectorSelectionGlyph.cs
- XPathSelfQuery.cs
- ToolStripItemTextRenderEventArgs.cs
- GridLength.cs
- ComMethodElementCollection.cs
- TypeUtil.cs
- TreeNodeCollectionEditor.cs
- NamespaceInfo.cs
- ErrorTableItemStyle.cs
- PageTheme.cs
- CanExecuteRoutedEventArgs.cs
- VScrollProperties.cs
- MarkupWriter.cs
- HostingEnvironmentSection.cs
- BlockCollection.cs
- SynchronousReceiveElement.cs
- Array.cs
- SiteIdentityPermission.cs
- IsolatedStorageSecurityState.cs
- MarkupCompiler.cs
- InvalidEnumArgumentException.cs
- GregorianCalendarHelper.cs
- MetadataItem.cs
- Base64Encoding.cs
- VectorAnimationBase.cs
- MediaPlayer.cs
- XmlNodeChangedEventManager.cs
- DirectoryObjectSecurity.cs
- SolidColorBrush.cs
- CodeAttributeDeclaration.cs
- RoleGroup.cs
- HijriCalendar.cs
- CodeAccessPermission.cs
- PreviewControlDesigner.cs
- CompressEmulationStream.cs
- BinHexEncoder.cs
- XmlEncoding.cs
- CopyNodeSetAction.cs
- PolicyException.cs
- WebBrowserProgressChangedEventHandler.cs
- EditorPartCollection.cs
- SerializationSectionGroup.cs
- precedingsibling.cs
- TreeViewImageIndexConverter.cs
- WindowsTab.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ConstantExpression.cs
- ACL.cs