Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / AttachedPropertyBrowsableForChildrenAttribute.cs / 1305600 / AttachedPropertyBrowsableForChildrenAttribute.cs
namespace System.Windows { using System; ////// This attribute declares that a property is visible when the /// property owner is a parent of another element. For example, /// Canvas.Left is only useful on elements parented within the /// canvas. The class supports two types of tree walks: a shallow /// walk, the default which requires that the immediate parent be the /// owner type of the property, and a deep walk, declared by setting /// IncludeDescendants to true and requires that the owner type be /// somewhere in the parenting hierarchy. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class AttachedPropertyBrowsableForChildrenAttribute : AttachedPropertyBrowsableAttribute { //------------------------------------------------------ // // Constructors // //----------------------------------------------------- ////// Creates a new AttachedPropertyBrowsableForChildrenAttribute. /// public AttachedPropertyBrowsableForChildrenAttribute() { } //----------------------------------------------------- // // Public Properties // //----------------------------------------------------- ////// Gets or sets if the property should be browsable for just the /// immediate children (false) or all children (true). /// public bool IncludeDescendants { get { return _includeDescendants; } set { _includeDescendants = value; } } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- ////// Overrides Object.Equals to implement correct equality semantics for this /// attribute. /// public override bool Equals(object obj) { AttachedPropertyBrowsableForChildrenAttribute other = obj as AttachedPropertyBrowsableForChildrenAttribute; if (other == null) return false; return _includeDescendants == other._includeDescendants; } ////// Overrides Object.GetHashCode to implement correct hashing semantics. /// public override int GetHashCode() { return _includeDescendants.GetHashCode(); } //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ ////// Returns true if the object provided is the immediate logical /// child (if IncludeDescendants is false) or any logical child /// (if IncludeDescendants is true). /// internal override bool IsBrowsable(DependencyObject d, DependencyProperty dp) { if (d == null) throw new ArgumentNullException("d"); if (dp == null) throw new ArgumentNullException("dp"); DependencyObject walk = d; Type ownerType = dp.OwnerType; do { walk = FrameworkElement.GetFrameworkParent(walk); if (walk != null && ownerType.IsInstanceOfType(walk)) { return true; } } while (_includeDescendants && walk != null); return false; } //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ private bool _includeDescendants; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Windows { using System; ////// This attribute declares that a property is visible when the /// property owner is a parent of another element. For example, /// Canvas.Left is only useful on elements parented within the /// canvas. The class supports two types of tree walks: a shallow /// walk, the default which requires that the immediate parent be the /// owner type of the property, and a deep walk, declared by setting /// IncludeDescendants to true and requires that the owner type be /// somewhere in the parenting hierarchy. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class AttachedPropertyBrowsableForChildrenAttribute : AttachedPropertyBrowsableAttribute { //------------------------------------------------------ // // Constructors // //----------------------------------------------------- ////// Creates a new AttachedPropertyBrowsableForChildrenAttribute. /// public AttachedPropertyBrowsableForChildrenAttribute() { } //----------------------------------------------------- // // Public Properties // //----------------------------------------------------- ////// Gets or sets if the property should be browsable for just the /// immediate children (false) or all children (true). /// public bool IncludeDescendants { get { return _includeDescendants; } set { _includeDescendants = value; } } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- ////// Overrides Object.Equals to implement correct equality semantics for this /// attribute. /// public override bool Equals(object obj) { AttachedPropertyBrowsableForChildrenAttribute other = obj as AttachedPropertyBrowsableForChildrenAttribute; if (other == null) return false; return _includeDescendants == other._includeDescendants; } ////// Overrides Object.GetHashCode to implement correct hashing semantics. /// public override int GetHashCode() { return _includeDescendants.GetHashCode(); } //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ ////// Returns true if the object provided is the immediate logical /// child (if IncludeDescendants is false) or any logical child /// (if IncludeDescendants is true). /// internal override bool IsBrowsable(DependencyObject d, DependencyProperty dp) { if (d == null) throw new ArgumentNullException("d"); if (dp == null) throw new ArgumentNullException("dp"); DependencyObject walk = d; Type ownerType = dp.OwnerType; do { walk = FrameworkElement.GetFrameworkParent(walk); if (walk != null && ownerType.IsInstanceOfType(walk)) { return true; } } while (_includeDescendants && walk != null); return false; } //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ private bool _includeDescendants; } } // 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
- NewItemsContextMenuStrip.cs
- BinaryMessageEncoder.cs
- StateRuntime.cs
- DescendentsWalkerBase.cs
- odbcmetadatafactory.cs
- DetailsViewInsertEventArgs.cs
- KeyEvent.cs
- DataGridViewComboBoxColumn.cs
- ComponentChangingEvent.cs
- RemotingConfiguration.cs
- SaveFileDialog.cs
- CodeEventReferenceExpression.cs
- CustomAssemblyResolver.cs
- XmlnsDictionary.cs
- TextEffect.cs
- CollectionEditor.cs
- FileRegion.cs
- FormClosingEvent.cs
- Library.cs
- XamlTypeMapperSchemaContext.cs
- CharEnumerator.cs
- HttpCacheVary.cs
- xmlsaver.cs
- GroupByQueryOperator.cs
- ContractNamespaceAttribute.cs
- Latin1Encoding.cs
- FunctionDefinition.cs
- ResourcesChangeInfo.cs
- XmlArrayAttribute.cs
- EntityCommandCompilationException.cs
- PeerNameRecordCollection.cs
- WSSecureConversationFeb2005.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- WebHeaderCollection.cs
- _AutoWebProxyScriptEngine.cs
- WmiInstallComponent.cs
- RootDesignerSerializerAttribute.cs
- WindowProviderWrapper.cs
- ExtenderControl.cs
- ActivityExecutionContextCollection.cs
- InvalidPrinterException.cs
- DataGridViewCellPaintingEventArgs.cs
- URL.cs
- PeerName.cs
- InvokePatternIdentifiers.cs
- Internal.cs
- StylusShape.cs
- PolicyException.cs
- ObjectHelper.cs
- RightsManagementLicense.cs
- EntryIndex.cs
- EventlogProvider.cs
- SelectedDatesCollection.cs
- CollectionsUtil.cs
- XmlNamespaceDeclarationsAttribute.cs
- SearchForVirtualItemEventArgs.cs
- ToolStripPanelRenderEventArgs.cs
- MediaPlayerState.cs
- FragmentQuery.cs
- EntitySetDataBindingList.cs
- Overlapped.cs
- CellIdBoolean.cs
- ClockGroup.cs
- HttpBindingExtension.cs
- EdmToObjectNamespaceMap.cs
- X509UI.cs
- SafeMarshalContext.cs
- cookiecontainer.cs
- DbConnectionPoolOptions.cs
- QueryableDataSource.cs
- RangeValidator.cs
- RouteUrlExpressionBuilder.cs
- formatstringdialog.cs
- IgnoreFileBuildProvider.cs
- MultiPropertyDescriptorGridEntry.cs
- TypeValidationEventArgs.cs
- BulletChrome.cs
- CodeAttributeDeclarationCollection.cs
- SqlDataSource.cs
- PresentationSource.cs
- MetabaseReader.cs
- Random.cs
- Separator.cs
- RecordConverter.cs
- QueryConverter.cs
- NameTable.cs
- PropertyEmitter.cs
- FormsAuthenticationUserCollection.cs
- AssemblyNameProxy.cs
- ButtonField.cs
- DrawTreeNodeEventArgs.cs
- DispatcherObject.cs
- PropertyToken.cs
- LocalIdKeyIdentifierClause.cs
- PrintPreviewDialog.cs
- BindingExpression.cs
- ExpressionVisitor.cs
- PersonalizationProviderCollection.cs
- CloseCryptoHandleRequest.cs
- AsymmetricKeyExchangeDeformatter.cs