Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Automation / Peers / MenuItemAutomationPeer.cs / 1 / MenuItemAutomationPeer.cs
using System; using System.Collections; 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 MenuItemAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider, IToggleProvider { /// public MenuItemAutomationPeer(MenuItem owner): base(owner) { } /// override protected string GetClassNameCore() { return "MenuItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.MenuItem; } /// override public object GetPattern(PatternInterface patternInterface) { object result = null; MenuItem owner = (MenuItem)Owner; if (patternInterface == PatternInterface.ExpandCollapse) { MenuItemRole role = owner.Role; if ( (role == MenuItemRole.TopLevelHeader || role == MenuItemRole.SubmenuHeader) && owner.HasItems) { result = this; } } else if (patternInterface == PatternInterface.Toggle) { if (owner.IsCheckable) { result = this; } } else if (patternInterface == PatternInterface.Invoke) { MenuItemRole role = owner.Role; if ( (role == MenuItemRole.TopLevelItem || role == MenuItemRole.SubmenuItem) && !owner.HasItems) { result = this; } } return result; } /// override protected string GetAccessKeyCore() { string accessKey = base.GetAccessKeyCore(); if (!string.IsNullOrEmpty(accessKey)) { MenuItem menuItem = (MenuItem)Owner; MenuItemRole role = menuItem.Role; if (role == MenuItemRole.TopLevelHeader || role == MenuItemRole.TopLevelItem) { accessKey = "Alt+" + accessKey; } } return accessKey; } // MenuItem cannot rely on the base which gets the visal children because submenu items are part of // other visual tree under a Popup. // We return the list of items containers if they are currently visible // In case MenuItem is not expanded we return null /// protected override ListGetChildrenCore() { List children = null; if (ExpandCollapseState.Expanded == ((IExpandCollapseProvider)this).ExpandCollapseState) { ItemsControl owner = (ItemsControl)Owner; ItemCollection items = owner.Items; if (items.Count > 0) { children = new List (items.Count); for (int i = 0; i < items.Count; i++) { UIElement uiElement = owner.ItemContainerGenerator.ContainerFromIndex(i) as UIElement; if (uiElement != null) { AutomationPeer peer = UIElementAutomationPeer.FromElement(uiElement); if (peer == null) peer = UIElementAutomationPeer.CreatePeerForElement(uiElement); children.Add(peer); } } } } return children; } /// void IExpandCollapseProvider.Expand() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if ( (role != MenuItemRole.TopLevelHeader && role != MenuItemRole.SubmenuHeader) || !owner.HasItems) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } owner.OpenMenu(); } /// void IExpandCollapseProvider.Collapse() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if ( (role != MenuItemRole.TopLevelHeader && role != MenuItemRole.SubmenuHeader) || !owner.HasItems) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } owner.IsSubmenuOpen = false; } /// ExpandCollapseState IExpandCollapseProvider.ExpandCollapseState { get { ExpandCollapseState result = ExpandCollapseState.Collapsed; MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if (role == MenuItemRole.TopLevelItem || role == MenuItemRole.SubmenuItem || !owner.HasItems) { result = ExpandCollapseState.LeafNode; } else if (owner.IsSubmenuOpen) { result = ExpandCollapseState.Expanded; } return result; } } /// void IInvokeProvider.Invoke() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if (role == MenuItemRole.TopLevelItem || role == MenuItemRole.SubmenuItem) { owner.ClickItem(); } else if (role == MenuItemRole.TopLevelHeader || role == MenuItemRole.SubmenuHeader) { owner.ClickHeader(); } } /// void IToggleProvider.Toggle() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; if (!owner.IsCheckable) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } owner.IsChecked = !owner.IsChecked; } /// ToggleState IToggleProvider.ToggleState { get { MenuItem owner = (MenuItem)Owner; return owner.IsChecked ? ToggleState.On : ToggleState.Off; } } /// // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] internal void RaiseExpandCollapseAutomationEvent(bool oldValue, bool newValue) { RaisePropertyChangedEvent( ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, oldValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed, newValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed); } // Return the base without the AccessKey character /// override protected string GetNameCore() { string result = base.GetNameCore(); if (!string.IsNullOrEmpty(result)) { MenuItem menuItem = (MenuItem)Owner; if (menuItem.Header is string) { return AccessText.RemoveAccessKeyMarker(result); } } return result; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections; 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 MenuItemAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider, IToggleProvider { /// public MenuItemAutomationPeer(MenuItem owner): base(owner) { } /// override protected string GetClassNameCore() { return "MenuItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.MenuItem; } /// override public object GetPattern(PatternInterface patternInterface) { object result = null; MenuItem owner = (MenuItem)Owner; if (patternInterface == PatternInterface.ExpandCollapse) { MenuItemRole role = owner.Role; if ( (role == MenuItemRole.TopLevelHeader || role == MenuItemRole.SubmenuHeader) && owner.HasItems) { result = this; } } else if (patternInterface == PatternInterface.Toggle) { if (owner.IsCheckable) { result = this; } } else if (patternInterface == PatternInterface.Invoke) { MenuItemRole role = owner.Role; if ( (role == MenuItemRole.TopLevelItem || role == MenuItemRole.SubmenuItem) && !owner.HasItems) { result = this; } } return result; } /// override protected string GetAccessKeyCore() { string accessKey = base.GetAccessKeyCore(); if (!string.IsNullOrEmpty(accessKey)) { MenuItem menuItem = (MenuItem)Owner; MenuItemRole role = menuItem.Role; if (role == MenuItemRole.TopLevelHeader || role == MenuItemRole.TopLevelItem) { accessKey = "Alt+" + accessKey; } } return accessKey; } // MenuItem cannot rely on the base which gets the visal children because submenu items are part of // other visual tree under a Popup. // We return the list of items containers if they are currently visible // In case MenuItem is not expanded we return null /// protected override List GetChildrenCore() { List children = null; if (ExpandCollapseState.Expanded == ((IExpandCollapseProvider)this).ExpandCollapseState) { ItemsControl owner = (ItemsControl)Owner; ItemCollection items = owner.Items; if (items.Count > 0) { children = new List (items.Count); for (int i = 0; i < items.Count; i++) { UIElement uiElement = owner.ItemContainerGenerator.ContainerFromIndex(i) as UIElement; if (uiElement != null) { AutomationPeer peer = UIElementAutomationPeer.FromElement(uiElement); if (peer == null) peer = UIElementAutomationPeer.CreatePeerForElement(uiElement); children.Add(peer); } } } } return children; } /// void IExpandCollapseProvider.Expand() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if ( (role != MenuItemRole.TopLevelHeader && role != MenuItemRole.SubmenuHeader) || !owner.HasItems) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } owner.OpenMenu(); } /// void IExpandCollapseProvider.Collapse() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if ( (role != MenuItemRole.TopLevelHeader && role != MenuItemRole.SubmenuHeader) || !owner.HasItems) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } owner.IsSubmenuOpen = false; } /// ExpandCollapseState IExpandCollapseProvider.ExpandCollapseState { get { ExpandCollapseState result = ExpandCollapseState.Collapsed; MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if (role == MenuItemRole.TopLevelItem || role == MenuItemRole.SubmenuItem || !owner.HasItems) { result = ExpandCollapseState.LeafNode; } else if (owner.IsSubmenuOpen) { result = ExpandCollapseState.Expanded; } return result; } } /// void IInvokeProvider.Invoke() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; MenuItemRole role = owner.Role; if (role == MenuItemRole.TopLevelItem || role == MenuItemRole.SubmenuItem) { owner.ClickItem(); } else if (role == MenuItemRole.TopLevelHeader || role == MenuItemRole.SubmenuHeader) { owner.ClickHeader(); } } /// void IToggleProvider.Toggle() { if(!IsEnabled()) throw new ElementNotEnabledException(); MenuItem owner = (MenuItem)Owner; if (!owner.IsCheckable) { throw new InvalidOperationException(SR.Get(SRID.UIA_OperationCannotBePerformed)); } owner.IsChecked = !owner.IsChecked; } /// ToggleState IToggleProvider.ToggleState { get { MenuItem owner = (MenuItem)Owner; return owner.IsChecked ? ToggleState.On : ToggleState.Off; } } /// // [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] internal void RaiseExpandCollapseAutomationEvent(bool oldValue, bool newValue) { RaisePropertyChangedEvent( ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, oldValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed, newValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed); } // Return the base without the AccessKey character /// override protected string GetNameCore() { string result = base.GetNameCore(); if (!string.IsNullOrEmpty(result)) { MenuItem menuItem = (MenuItem)Owner; if (menuItem.Header is string) { return AccessText.RemoveAccessKeyMarker(result); } } return result; } } } // 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
- EncodingFallbackAwareXmlTextWriter.cs
- XmlHierarchyData.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- PartialList.cs
- TimelineClockCollection.cs
- SwitchElementsCollection.cs
- ReferencedAssembly.cs
- SqlDataSourceStatusEventArgs.cs
- EmptyReadOnlyDictionaryInternal.cs
- PropertyItemInternal.cs
- TemplateXamlTreeBuilder.cs
- XmlEventCache.cs
- XmlnsCache.cs
- Part.cs
- ExpandSegment.cs
- FrameworkContentElement.cs
- ConvertersCollection.cs
- HebrewNumber.cs
- ResourceManagerWrapper.cs
- IfAction.cs
- DebugInfoGenerator.cs
- UInt16Storage.cs
- DataGridColumnsPage.cs
- BindingValueChangedEventArgs.cs
- SchemaMapping.cs
- PerformanceCountersElement.cs
- ExpressionEditorAttribute.cs
- OSFeature.cs
- DictionaryTraceRecord.cs
- RowToFieldTransformer.cs
- GlyphRun.cs
- HMAC.cs
- SecurityHelper.cs
- QuotedPrintableStream.cs
- ExpressionBuilderCollection.cs
- ExcludeFromCodeCoverageAttribute.cs
- FilterQuery.cs
- BinaryFormatterSinks.cs
- FormsAuthenticationUserCollection.cs
- AutomationTextAttribute.cs
- StringArrayConverter.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- VectorAnimationUsingKeyFrames.cs
- CommandManager.cs
- ConnectionManagementElement.cs
- ToolStripInSituService.cs
- ReferentialConstraint.cs
- MappingSource.cs
- SqlErrorCollection.cs
- SortQuery.cs
- BindableAttribute.cs
- SmtpNetworkElement.cs
- ReadOnlyObservableCollection.cs
- SourceSwitch.cs
- CodeAttributeDeclarationCollection.cs
- DbInsertCommandTree.cs
- WorkflowNamespace.cs
- PriorityRange.cs
- ProcessHost.cs
- _LocalDataStoreMgr.cs
- SemanticResolver.cs
- XmlBinaryReader.cs
- MenuBindingsEditor.cs
- WindowsButton.cs
- TextEditorSpelling.cs
- CapabilitiesPattern.cs
- IndependentlyAnimatedPropertyMetadata.cs
- TraceListeners.cs
- SettingsPropertyValue.cs
- TreeIterators.cs
- BitmapFrameEncode.cs
- SByteConverter.cs
- ValueTable.cs
- RoutingEndpointTrait.cs
- DataServiceQueryOfT.cs
- sqlcontext.cs
- SmtpFailedRecipientsException.cs
- SplitterCancelEvent.cs
- SafeEventLogWriteHandle.cs
- Int32RectConverter.cs
- ByteStorage.cs
- ZipPackage.cs
- HttpDebugHandler.cs
- WhileDesigner.cs
- BypassElementCollection.cs
- AppDomain.cs
- DataGridCommandEventArgs.cs
- EventEntry.cs
- StylusButtonEventArgs.cs
- DashStyles.cs
- HashJoinQueryOperatorEnumerator.cs
- HtmlMeta.cs
- AspProxy.cs
- SR.cs
- TypeUtil.cs
- SQLUtility.cs
- QueryOperatorEnumerator.cs
- TextBoxBase.cs
- RegexCapture.cs
- BitStack.cs