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
- wgx_exports.cs
- XmlSchemaFacet.cs
- DbCommandDefinition.cs
- AutoGeneratedField.cs
- XhtmlBasicObjectListAdapter.cs
- RedistVersionInfo.cs
- InternalPermissions.cs
- BitmapEffect.cs
- GPStream.cs
- ToolStripMenuItem.cs
- TemplatingOptionsDialog.cs
- Util.cs
- WebSysDescriptionAttribute.cs
- RegionIterator.cs
- DecoderBestFitFallback.cs
- SqlConnectionPoolProviderInfo.cs
- Trace.cs
- SafeRightsManagementHandle.cs
- CodePropertyReferenceExpression.cs
- Clause.cs
- Keyboard.cs
- DataKey.cs
- SQLSingle.cs
- RegistryConfigurationProvider.cs
- XmlDocumentFragment.cs
- JoinGraph.cs
- IdentityModelStringsVersion1.cs
- SolidBrush.cs
- DefaultTraceListener.cs
- ADMembershipProvider.cs
- DataGridViewRowConverter.cs
- DispatcherEventArgs.cs
- CompilationPass2TaskInternal.cs
- PositiveTimeSpanValidator.cs
- SoapClientProtocol.cs
- DynamicResourceExtension.cs
- WebException.cs
- TraceFilter.cs
- SmiTypedGetterSetter.cs
- QuaternionConverter.cs
- ToolStripProgressBar.cs
- SystemUdpStatistics.cs
- VarInfo.cs
- ListBoxChrome.cs
- RadioButtonRenderer.cs
- AssociationType.cs
- Converter.cs
- GradientStop.cs
- DocumentScope.cs
- Formatter.cs
- OutputCacheProfile.cs
- GroupByQueryOperator.cs
- MetadataFile.cs
- UIPermission.cs
- SelectingProviderEventArgs.cs
- Currency.cs
- unsafenativemethodstextservices.cs
- InputMethod.cs
- BitConverter.cs
- DataGridViewComboBoxColumn.cs
- Icon.cs
- BevelBitmapEffect.cs
- FillErrorEventArgs.cs
- CursorInteropHelper.cs
- LOSFormatter.cs
- Reference.cs
- ButtonPopupAdapter.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- SoundPlayer.cs
- Pair.cs
- MaterialCollection.cs
- CodeParameterDeclarationExpression.cs
- DirectoryObjectSecurity.cs
- NotConverter.cs
- StagingAreaInputItem.cs
- WpfMemberInvoker.cs
- ComplexBindingPropertiesAttribute.cs
- UInt64.cs
- NumericUpDown.cs
- SafeRightsManagementSessionHandle.cs
- TypeUsageBuilder.cs
- SimpleTextLine.cs
- MulticastOption.cs
- BasicHttpBinding.cs
- LineSegment.cs
- DBDataPermissionAttribute.cs
- ScalarRestriction.cs
- ToolStripItemRenderEventArgs.cs
- Button.cs
- FlatButtonAppearance.cs
- NumberSubstitution.cs
- WebPartPersonalization.cs
- SessionPageStateSection.cs
- BitmapPalette.cs
- ProcessManager.cs
- DataControlCommands.cs
- GetWorkflowTree.cs
- MarkupExtensionParser.cs
- ResizeGrip.cs
- FlowDocumentFormatter.cs