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
- Int64.cs
- NameValueSectionHandler.cs
- RepeaterItemEventArgs.cs
- AdRotator.cs
- ItemChangedEventArgs.cs
- Duration.cs
- SqlConnectionPoolGroupProviderInfo.cs
- MeasurementDCInfo.cs
- WebPartEditorCancelVerb.cs
- NextPreviousPagerField.cs
- ServiceContractGenerationContext.cs
- CollectionViewGroupInternal.cs
- ScriptManager.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- ProfileManager.cs
- ModuleBuilderData.cs
- safelink.cs
- SqlCacheDependencySection.cs
- CodeStatementCollection.cs
- GradientBrush.cs
- SafeRegistryKey.cs
- GradientStopCollection.cs
- PropertyGridCommands.cs
- PagesSection.cs
- DataTableReader.cs
- RegistryDataKey.cs
- QueryOperationResponseOfT.cs
- MaskDescriptors.cs
- DocumentXmlWriter.cs
- UdpTransportSettingsElement.cs
- httpapplicationstate.cs
- DataRowChangeEvent.cs
- RequestChannelBinder.cs
- CodeCatchClause.cs
- DataGridViewLinkColumn.cs
- PasswordBox.cs
- TlsSspiNegotiation.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ButtonBaseAutomationPeer.cs
- URLString.cs
- SchemaAttDef.cs
- WindowsListViewItem.cs
- ImageListImage.cs
- _HTTPDateParse.cs
- SqlDataRecord.cs
- PopOutPanel.cs
- SafeHandle.cs
- Brushes.cs
- NamespaceEmitter.cs
- DesignerUtility.cs
- PerspectiveCamera.cs
- SqlReorderer.cs
- RIPEMD160Managed.cs
- CatalogPart.cs
- TableCellAutomationPeer.cs
- NestedContainer.cs
- SettingsAttributeDictionary.cs
- WindowsTreeView.cs
- ClosureBinding.cs
- MulticastDelegate.cs
- SharedConnectionListener.cs
- AccessibleObject.cs
- ToolStripItemClickedEventArgs.cs
- TriState.cs
- LinearKeyFrames.cs
- Task.cs
- WebPart.cs
- PermissionSet.cs
- PositiveTimeSpanValidatorAttribute.cs
- CriticalExceptions.cs
- TextDecorations.cs
- webclient.cs
- ObjectConverter.cs
- Figure.cs
- HostingEnvironmentException.cs
- HebrewCalendar.cs
- URIFormatException.cs
- MsmqInputMessagePool.cs
- TabletDevice.cs
- DateTimeEditor.cs
- DataRowComparer.cs
- InkPresenterAutomationPeer.cs
- Int64KeyFrameCollection.cs
- DataGrid.cs
- PeerToPeerException.cs
- DataServiceRequestOfT.cs
- bindurihelper.cs
- StrongNameMembershipCondition.cs
- XmlWhitespace.cs
- ServiceElementCollection.cs
- SafeEventLogWriteHandle.cs
- LinqToSqlWrapper.cs
- JsonDeserializer.cs
- UnsafeNativeMethods.cs
- FormViewInsertEventArgs.cs
- UnsafePeerToPeerMethods.cs
- DesignerLoader.cs
- DrawingVisualDrawingContext.cs
- DataServiceRequestOfT.cs
- FormViewRow.cs