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
- SqlTriggerContext.cs
- DiscoveryReference.cs
- SqlError.cs
- CleanUpVirtualizedItemEventArgs.cs
- ApplicationSettingsBase.cs
- TemplateControlCodeDomTreeGenerator.cs
- ListViewInsertEventArgs.cs
- UpdatePanelControlTrigger.cs
- ExpressionBuilder.cs
- HorizontalAlignConverter.cs
- PersonalizationProviderHelper.cs
- SimpleWorkerRequest.cs
- CollectionAdapters.cs
- PathGeometry.cs
- DocumentNUp.cs
- ParsedAttributeCollection.cs
- DataGrid.cs
- EditorServiceContext.cs
- RtfFormatStack.cs
- EncoderBestFitFallback.cs
- Stopwatch.cs
- ObjectSecurity.cs
- ProtocolsSection.cs
- TextBoxLine.cs
- SmtpException.cs
- ObjectDataSourceView.cs
- MembershipValidatePasswordEventArgs.cs
- ProviderConnectionPoint.cs
- TextAdaptor.cs
- RootBrowserWindow.cs
- HwndSourceKeyboardInputSite.cs
- ColumnHeader.cs
- StorageModelBuildProvider.cs
- SemanticBasicElement.cs
- CaseStatement.cs
- HashCodeCombiner.cs
- Button.cs
- OwnerDrawPropertyBag.cs
- ObjectStateFormatter.cs
- FilteredXmlReader.cs
- InvalidProgramException.cs
- DataGridColumn.cs
- ResolveCriteria.cs
- ShaderEffect.cs
- future.cs
- UriScheme.cs
- XmlBindingWorker.cs
- ChtmlFormAdapter.cs
- CheckBox.cs
- TTSVoice.cs
- _ListenerRequestStream.cs
- VirtualizingPanel.cs
- State.cs
- OptimizedTemplateContentHelper.cs
- TypedElement.cs
- KeyNotFoundException.cs
- BCLDebug.cs
- xmlformatgeneratorstatics.cs
- BufferedGraphicsContext.cs
- BitmapEffectInputData.cs
- FormViewInsertedEventArgs.cs
- LifetimeServices.cs
- Container.cs
- DbLambda.cs
- PropertyValueChangedEvent.cs
- ConnectionStringsExpressionEditor.cs
- TextCompositionEventArgs.cs
- FileDetails.cs
- ECDsaCng.cs
- MenuItemAutomationPeer.cs
- WindowShowOrOpenTracker.cs
- BindingContext.cs
- RawStylusSystemGestureInputReport.cs
- HttpRuntimeSection.cs
- ItemCheckEvent.cs
- Stroke.cs
- MatrixIndependentAnimationStorage.cs
- DefinitionUpdate.cs
- CoreSwitches.cs
- TableItemPattern.cs
- IntegerValidator.cs
- NavigationPropertySingletonExpression.cs
- EncodingDataItem.cs
- Page.cs
- RootDesignerSerializerAttribute.cs
- MessageEventSubscriptionService.cs
- ContentElementAutomationPeer.cs
- CommonServiceBehaviorElement.cs
- DataGridViewTopLeftHeaderCell.cs
- DelegatingConfigHost.cs
- DefaultValueMapping.cs
- AppSettingsExpressionBuilder.cs
- ScrollEventArgs.cs
- CompilationSection.cs
- XmlnsDefinitionAttribute.cs
- UndoManager.cs
- SecurityStateEncoder.cs
- Thread.cs
- DescendentsWalker.cs
- DispatcherOperation.cs