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
- basenumberconverter.cs
- MulticastNotSupportedException.cs
- GeometryDrawing.cs
- GenericRootAutomationPeer.cs
- InkCanvas.cs
- Converter.cs
- AddInPipelineAttributes.cs
- Tokenizer.cs
- ReadOnlyDataSourceView.cs
- XmlQueryContext.cs
- SingleAnimation.cs
- TemplateBuilder.cs
- RouteParametersHelper.cs
- DependencyProperty.cs
- HandlerWithFactory.cs
- GetWinFXPath.cs
- WizardForm.cs
- TypeEnumerableViewSchema.cs
- SqlIdentifier.cs
- WindowHideOrCloseTracker.cs
- OutputCacheSection.cs
- PropertyItem.cs
- EntityDataSourceQueryBuilder.cs
- OleDbConnection.cs
- DbDeleteCommandTree.cs
- Rectangle.cs
- Polygon.cs
- MDIControlStrip.cs
- ApplicationHost.cs
- Transform.cs
- StringCollection.cs
- LogicalExpr.cs
- DescendentsWalkerBase.cs
- ParserStreamGeometryContext.cs
- TextSerializer.cs
- Binding.cs
- WindowsSolidBrush.cs
- RoutedEventConverter.cs
- InstanceCompleteException.cs
- RulePatternOps.cs
- WebPageTraceListener.cs
- RequestCacheEntry.cs
- DataControlCommands.cs
- Mutex.cs
- WebServiceParameterData.cs
- MonikerUtility.cs
- IRCollection.cs
- GlyphCache.cs
- MergeFilterQuery.cs
- SchemaImporterExtension.cs
- CallbackDebugElement.cs
- TreeView.cs
- ComponentChangedEvent.cs
- DockPatternIdentifiers.cs
- WebReferenceCollection.cs
- WindowAutomationPeer.cs
- Italic.cs
- CreateBookmarkScope.cs
- WpfWebRequestHelper.cs
- LineSegment.cs
- InvalidateEvent.cs
- AnonymousIdentificationModule.cs
- CultureTableRecord.cs
- NameService.cs
- PathSegmentCollection.cs
- XPathBinder.cs
- DragSelectionMessageFilter.cs
- EventLogEntry.cs
- WindowShowOrOpenTracker.cs
- InvalidCommandTreeException.cs
- CopyAttributesAction.cs
- CompensationExtension.cs
- LocalBuilder.cs
- Operators.cs
- QuaternionKeyFrameCollection.cs
- CheckBox.cs
- MachineKeySection.cs
- DbSetClause.cs
- TreeNodeBinding.cs
- DocumentOrderQuery.cs
- InfoCardRequestException.cs
- RegexCapture.cs
- FormViewModeEventArgs.cs
- TableDetailsRow.cs
- PartialTrustValidationBehavior.cs
- ApplicationServiceManager.cs
- ISAPIApplicationHost.cs
- StorageInfo.cs
- OleDbReferenceCollection.cs
- Rectangle.cs
- COM2ExtendedUITypeEditor.cs
- SwitchCase.cs
- Pool.cs
- SQLRoleProvider.cs
- ClientUrlResolverWrapper.cs
- XmlNodeWriter.cs
- LinearGradientBrush.cs
- DataTrigger.cs
- Literal.cs
- LineSegment.cs