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
- SymmetricKeyWrap.cs
- OpacityConverter.cs
- TypeToken.cs
- PeerTransportElement.cs
- DocumentSequenceHighlightLayer.cs
- DashStyles.cs
- Activator.cs
- RadioButton.cs
- FilterQuery.cs
- NodeCounter.cs
- SqlFunctionAttribute.cs
- ListMarkerSourceInfo.cs
- DoubleStorage.cs
- DesignerActionHeaderItem.cs
- DoubleKeyFrameCollection.cs
- NonSerializedAttribute.cs
- CodeAttachEventStatement.cs
- Util.cs
- StoryFragments.cs
- ToolStripPanel.cs
- Paragraph.cs
- ArgumentException.cs
- Expression.cs
- SizeChangedEventArgs.cs
- SqlCacheDependencyDatabase.cs
- OleDbConnectionFactory.cs
- ImageField.cs
- ByValueEqualityComparer.cs
- CfgParser.cs
- UnknownBitmapDecoder.cs
- DataGridTablesFactory.cs
- OracleParameterCollection.cs
- CheckBoxFlatAdapter.cs
- WsdlBuildProvider.cs
- SystemColors.cs
- StandardCommands.cs
- PerformanceCounterLib.cs
- WindowsAltTab.cs
- PolyLineSegment.cs
- NegationPusher.cs
- TextEmbeddedObject.cs
- ValidationError.cs
- SqlServices.cs
- mediaeventargs.cs
- StructuralCache.cs
- WCFBuildProvider.cs
- EventProperty.cs
- ButtonDesigner.cs
- JsonReaderWriterFactory.cs
- CriticalFileToken.cs
- ApplicationGesture.cs
- FormsAuthenticationConfiguration.cs
- SspiNegotiationTokenProvider.cs
- CollectionChange.cs
- Font.cs
- Polyline.cs
- SqlDesignerDataSourceView.cs
- LinearGradientBrush.cs
- TemplateField.cs
- RegexCompilationInfo.cs
- HyperLinkField.cs
- MimeWriter.cs
- DataControlImageButton.cs
- Drawing.cs
- MailDefinition.cs
- FreezableOperations.cs
- ExtensionFile.cs
- CrossAppDomainChannel.cs
- SoapAttributeOverrides.cs
- DateTimeConverter2.cs
- HttpCacheVaryByContentEncodings.cs
- StreamUpgradeAcceptor.cs
- ImportContext.cs
- HwndSource.cs
- EmptyImpersonationContext.cs
- TypeInfo.cs
- UnSafeCharBuffer.cs
- TypeConverterHelper.cs
- ConfigurationLockCollection.cs
- VectorConverter.cs
- DataBinder.cs
- ArraySegment.cs
- QueryCacheKey.cs
- figurelength.cs
- TraceHandlerErrorFormatter.cs
- ApplicationSettingsBase.cs
- NativeMethods.cs
- XamlStream.cs
- cache.cs
- WebSysDisplayNameAttribute.cs
- SecureUICommand.cs
- RuleAttributes.cs
- HandlerBase.cs
- IdentityReference.cs
- AndCondition.cs
- TypeCollectionDesigner.xaml.cs
- List.cs
- WebPartHeaderCloseVerb.cs
- HelpPage.cs
- HitTestParameters3D.cs