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
- PersonalizationAdministration.cs
- Subtree.cs
- LineGeometry.cs
- LineServicesCallbacks.cs
- DES.cs
- EnglishPluralizationService.cs
- SignatureSummaryDialog.cs
- Crc32.cs
- DesignerImageAdapter.cs
- ClientSettingsSection.cs
- TextRangeBase.cs
- AncillaryOps.cs
- NetworkStream.cs
- XmlSchemaSimpleContentRestriction.cs
- PermissionToken.cs
- StoryFragments.cs
- SortDescriptionCollection.cs
- SafeLibraryHandle.cs
- ToolTipAutomationPeer.cs
- SelectionWordBreaker.cs
- SupportsEventValidationAttribute.cs
- AttributeEmitter.cs
- PagePropertiesChangingEventArgs.cs
- MatrixStack.cs
- ByeMessageCD1.cs
- DocumentXmlWriter.cs
- KnownTypeAttribute.cs
- AutoFocusStyle.xaml.cs
- GraphicsContainer.cs
- IISUnsafeMethods.cs
- EmptyEnumerator.cs
- DesignTimeVisibleAttribute.cs
- AmbientValueAttribute.cs
- DependencyPropertyDescriptor.cs
- AdCreatedEventArgs.cs
- StringFunctions.cs
- FirewallWrapper.cs
- GraphicsContext.cs
- QueryExpr.cs
- MessageBox.cs
- DirectionalLight.cs
- WebPartCatalogCloseVerb.cs
- LineProperties.cs
- DescendantQuery.cs
- SolidBrush.cs
- Codec.cs
- DesignTimeTemplateParser.cs
- ADConnectionHelper.cs
- DataError.cs
- XmlBinaryReader.cs
- GridViewRowEventArgs.cs
- TableLayout.cs
- CompositeDataBoundControl.cs
- OrderedDictionaryStateHelper.cs
- Encoder.cs
- BitmapCacheBrush.cs
- AccessDataSource.cs
- Binding.cs
- XmlIncludeAttribute.cs
- ChangeDirector.cs
- ConstructorExpr.cs
- Atom10FormatterFactory.cs
- Emitter.cs
- Soap.cs
- ErrorFormatter.cs
- Run.cs
- ChineseLunisolarCalendar.cs
- HtmlAnchor.cs
- Errors.cs
- LinqDataSourceView.cs
- StaticContext.cs
- ScriptModule.cs
- CodeArgumentReferenceExpression.cs
- SmtpTransport.cs
- JsonWriter.cs
- EncoderParameter.cs
- PassportPrincipal.cs
- OleDbWrapper.cs
- WebRequest.cs
- Parameter.cs
- HttpAsyncResult.cs
- SqlDependencyListener.cs
- InternalConfigConfigurationFactory.cs
- SettingsPropertyIsReadOnlyException.cs
- PackageStore.cs
- MetricEntry.cs
- TraceContext.cs
- EntityModelBuildProvider.cs
- VarRefManager.cs
- XmlComplianceUtil.cs
- OutputChannelBinder.cs
- PrintSystemException.cs
- SchemaCollectionPreprocessor.cs
- CookielessHelper.cs
- XmlSchemaException.cs
- Item.cs
- PartialArray.cs
- PageVisual.cs
- CodeComment.cs
- EdmItemCollection.OcAssemblyCache.cs