Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / TabItemAutomationPeer.cs / 1305600 / TabItemAutomationPeer.cs
using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Windows; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class TabItemAutomationPeer : SelectorItemAutomationPeer, ISelectionItemProvider { /// public TabItemAutomationPeer(object owner, TabControlAutomationPeer tabControlAutomationPeer) : base(owner, tabControlAutomationPeer) {} /// override protected string GetClassNameCore() { return "TabItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.TabItem; } // Return the base without the AccessKey character /// override protected string GetNameCore() { string result = base.GetNameCore(); if (!string.IsNullOrEmpty(result)) { TabItem tabItem = GetWrapper() as TabItem; if ((tabItem != null) && (tabItem.Header is string)) { return AccessText.RemoveAccessKeyMarker(result); } } return result; } // Selected TabItem content is located under the TabControl style visual tree /// protected override ListGetChildrenCore() { // Call the base in case we have children in the header List headerChildren = base.GetChildrenCore(); // Only if the TabItem is selected we need to add its visual children TabItem tabItem = GetWrapper() as TabItem; if (tabItem != null && tabItem.IsSelected) { TabControl parentTabControl = ItemsControlAutomationPeer.Owner as TabControl; if (parentTabControl != null) { ContentPresenter contentHost = parentTabControl.SelectedContentPresenter; if (contentHost != null) { AutomationPeer contentHostPeer = new FrameworkElementAutomationPeer(contentHost); List contentChildren = contentHostPeer.GetChildren(); if (contentChildren != null) { if (headerChildren == null) headerChildren = contentChildren; else headerChildren.AddRange(contentChildren); } } } } return headerChildren; } void ISelectionItemProvider.RemoveFromSelection() { if (!IsEnabled()) throw new ElementNotEnabledException(); TabItem tabItem = GetWrapper() as TabItem; if ((tabItem != null) && tabItem.IsSelected) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } } /// Realization for TabItem is tied to selection, bringing item into view for realizing the element /// as done for controls like ListBox doesn't make sense for TabControl. internal override void RealizeCore() { ISelectionItemProvider selectionItemProvider = this as ISelectionItemProvider; Selector parentSelector = (Selector)(ItemsControlAutomationPeer.Owner); if (parentSelector != null && selectionItemProvider != null) { if (parentSelector.CanSelectMultiple) selectionItemProvider.AddToSelection(); else selectionItemProvider.Select(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Windows; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class TabItemAutomationPeer : SelectorItemAutomationPeer, ISelectionItemProvider { /// public TabItemAutomationPeer(object owner, TabControlAutomationPeer tabControlAutomationPeer) : base(owner, tabControlAutomationPeer) {} /// override protected string GetClassNameCore() { return "TabItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.TabItem; } // Return the base without the AccessKey character /// override protected string GetNameCore() { string result = base.GetNameCore(); if (!string.IsNullOrEmpty(result)) { TabItem tabItem = GetWrapper() as TabItem; if ((tabItem != null) && (tabItem.Header is string)) { return AccessText.RemoveAccessKeyMarker(result); } } return result; } // Selected TabItem content is located under the TabControl style visual tree /// protected override List GetChildrenCore() { // Call the base in case we have children in the header List headerChildren = base.GetChildrenCore(); // Only if the TabItem is selected we need to add its visual children TabItem tabItem = GetWrapper() as TabItem; if (tabItem != null && tabItem.IsSelected) { TabControl parentTabControl = ItemsControlAutomationPeer.Owner as TabControl; if (parentTabControl != null) { ContentPresenter contentHost = parentTabControl.SelectedContentPresenter; if (contentHost != null) { AutomationPeer contentHostPeer = new FrameworkElementAutomationPeer(contentHost); List contentChildren = contentHostPeer.GetChildren(); if (contentChildren != null) { if (headerChildren == null) headerChildren = contentChildren; else headerChildren.AddRange(contentChildren); } } } } return headerChildren; } void ISelectionItemProvider.RemoveFromSelection() { if (!IsEnabled()) throw new ElementNotEnabledException(); TabItem tabItem = GetWrapper() as TabItem; if ((tabItem != null) && tabItem.IsSelected) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } } /// Realization for TabItem is tied to selection, bringing item into view for realizing the element /// as done for controls like ListBox doesn't make sense for TabControl. internal override void RealizeCore() { ISelectionItemProvider selectionItemProvider = this as ISelectionItemProvider; Selector parentSelector = (Selector)(ItemsControlAutomationPeer.Owner); if (parentSelector != null && selectionItemProvider != null) { if (parentSelector.CanSelectMultiple) selectionItemProvider.AddToSelection(); else selectionItemProvider.Select(); } } } } // 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
- BaseCodeDomTreeGenerator.cs
- ResourceAttributes.cs
- KeyEventArgs.cs
- PageAction.cs
- SequentialUshortCollection.cs
- ThumbAutomationPeer.cs
- ToolStripSettings.cs
- Section.cs
- Misc.cs
- BaseTemplateCodeDomTreeGenerator.cs
- SessionPageStateSection.cs
- SQLGuid.cs
- AccessControlList.cs
- NetworkAddressChange.cs
- GuidelineCollection.cs
- CompilerTypeWithParams.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SessionPageStateSection.cs
- ListBoxAutomationPeer.cs
- TextLine.cs
- SerializerDescriptor.cs
- FixedPageProcessor.cs
- CheckBox.cs
- BuildProvider.cs
- JsonUriDataContract.cs
- StylusButtonCollection.cs
- KeyValueConfigurationElement.cs
- TypeExtensionConverter.cs
- EnumValidator.cs
- InstanceKeyCollisionException.cs
- Types.cs
- Int16AnimationUsingKeyFrames.cs
- InvalidDataException.cs
- TextBreakpoint.cs
- SecureUICommand.cs
- MenuItemCollection.cs
- Evaluator.cs
- FrameworkRichTextComposition.cs
- PointAnimationBase.cs
- UnsafeNativeMethods.cs
- ToolStripTextBox.cs
- DataError.cs
- SafeCryptHandles.cs
- OleDbStruct.cs
- LocalizabilityAttribute.cs
- ParameterModifier.cs
- AutoGeneratedFieldProperties.cs
- VirtualDirectoryMappingCollection.cs
- IOException.cs
- Tag.cs
- XmlArrayItemAttributes.cs
- NullableDecimalMinMaxAggregationOperator.cs
- MimePart.cs
- SHA512.cs
- UIElement3D.cs
- HtmlString.cs
- X509ScopedServiceCertificateElementCollection.cs
- ReceiveSecurityHeaderElementManager.cs
- ELinqQueryState.cs
- PowerStatus.cs
- COM2ColorConverter.cs
- IERequestCache.cs
- HttpCapabilitiesEvaluator.cs
- WizardSideBarListControlItemEventArgs.cs
- DelegatingConfigHost.cs
- ECDsa.cs
- QuadraticBezierSegment.cs
- Missing.cs
- HTTPNotFoundHandler.cs
- XamlStackWriter.cs
- UpdateException.cs
- CompressStream.cs
- SimpleExpression.cs
- LinkedResource.cs
- webbrowsersite.cs
- GenericUI.cs
- LambdaCompiler.Lambda.cs
- Win32Exception.cs
- QueryCacheManager.cs
- VisualTreeUtils.cs
- DynamicValidator.cs
- PackageRelationshipCollection.cs
- PerformanceCounterLib.cs
- AttachedPropertyBrowsableAttribute.cs
- HostingEnvironment.cs
- SortedList.cs
- StrongNameIdentityPermission.cs
- AmbientLight.cs
- HttpWriter.cs
- CanonicalXml.cs
- DSACryptoServiceProvider.cs
- ComponentCollection.cs
- BindingContext.cs
- DetailsViewInsertedEventArgs.cs
- AmbientLight.cs
- DataGridViewTopRowAccessibleObject.cs
- StringInfo.cs
- ExplicitDiscriminatorMap.cs
- Int64.cs
- SQLResource.cs