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
- QilPatternVisitor.cs
- TransportSecurityHelpers.cs
- BrowserCapabilitiesCodeGenerator.cs
- SAPICategories.cs
- DatePickerAutomationPeer.cs
- Panel.cs
- CssStyleCollection.cs
- BitmapCache.cs
- TextEndOfSegment.cs
- AnonymousIdentificationModule.cs
- DesignerUtils.cs
- WebPartCloseVerb.cs
- BCLDebug.cs
- RegexReplacement.cs
- SortAction.cs
- TraceEventCache.cs
- Monitor.cs
- HandlerElement.cs
- ScriptResourceInfo.cs
- UDPClient.cs
- FontFamilyIdentifier.cs
- DiscreteKeyFrames.cs
- WebPartEditVerb.cs
- BrushValueSerializer.cs
- Hash.cs
- SimpleApplicationHost.cs
- DictionaryContent.cs
- BindStream.cs
- NativeMethods.cs
- WebPartEditorOkVerb.cs
- MergePropertyDescriptor.cs
- OperationResponse.cs
- MimeObjectFactory.cs
- ContextCorrelationInitializer.cs
- FormView.cs
- AttributeCollection.cs
- ExtensionDataObject.cs
- TableItemPattern.cs
- XmlCharacterData.cs
- LinearKeyFrames.cs
- QuerySelectOp.cs
- DataRelationCollection.cs
- MemoryResponseElement.cs
- NamespaceEmitter.cs
- SqlCacheDependencySection.cs
- MessageQueueKey.cs
- BooleanAnimationUsingKeyFrames.cs
- listitem.cs
- MediaScriptCommandRoutedEventArgs.cs
- KeyNotFoundException.cs
- OpenFileDialog.cs
- EventMap.cs
- NegotiationTokenAuthenticatorStateCache.cs
- localization.cs
- LexicalChunk.cs
- BitmapPalette.cs
- Hyperlink.cs
- UnsafeNativeMethods.cs
- DataViewManager.cs
- BindingExpressionBase.cs
- SegmentTree.cs
- InvalidateEvent.cs
- Verify.cs
- ClientSettings.cs
- UrlPath.cs
- ProcessModelInfo.cs
- EventSchemaTraceListener.cs
- DataGridViewCellConverter.cs
- XsltContext.cs
- InputLanguageManager.cs
- IteratorAsyncResult.cs
- MarginCollapsingState.cs
- DbReferenceCollection.cs
- StructuredTypeEmitter.cs
- CodeSnippetTypeMember.cs
- LinkDescriptor.cs
- ADMembershipUser.cs
- PropertyToken.cs
- AcceptorSessionSymmetricTransportSecurityProtocol.cs
- ToolStripItemImageRenderEventArgs.cs
- RequestCache.cs
- SQLBytesStorage.cs
- Utils.cs
- ConfigurationSchemaErrors.cs
- ReaderWriterLock.cs
- DesignerToolboxInfo.cs
- AdapterDictionary.cs
- XmlText.cs
- NonClientArea.cs
- ProvideValueServiceProvider.cs
- Int32CollectionConverter.cs
- StandardOleMarshalObject.cs
- TextRange.cs
- PeerNameRecordCollection.cs
- ObjectFullSpanRewriter.cs
- _NegotiateClient.cs
- DrawingAttributesDefaultValueFactory.cs
- ComponentEditorPage.cs
- MemberListBinding.cs
- PropertyGridEditorPart.cs