Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Automation / Peers / TreeViewAutomationPeer.cs / 1 / TreeViewAutomationPeer.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 TreeViewAutomationPeer : FrameworkElementAutomationPeer, ISelectionProvider { /// public TreeViewAutomationPeer(TreeView owner): base(owner) {} /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Tree; } /// override protected string GetClassNameCore() { return "TreeView"; } /// override public object GetPattern(PatternInterface patternInterface) { if (patternInterface == PatternInterface.Selection) { return this; } else if(patternInterface == PatternInterface.Scroll) { ItemsControl owner = (ItemsControl)Owner; if(owner.ScrollHost != null) { AutomationPeer scrollPeer = UIElementAutomationPeer.CreatePeerForElement(owner.ScrollHost); if(scrollPeer != null && scrollPeer is IScrollProvider) { scrollPeer.EventsSource = this; return (IScrollProvider)scrollPeer; } } } return null; } /// protected override ListGetChildrenCore() { ItemsControl owner = (ItemsControl)Owner; ItemCollection items = owner.Items; if (items.Count > 0) { List children = new List (items.Count); for (int i = 0; i < items.Count; i++) { TreeViewItem treeViewItem = owner.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem; if (treeViewItem != null) { AutomationPeer peer = UIElementAutomationPeer.FromElement(treeViewItem); if (peer == null) peer = UIElementAutomationPeer.CreatePeerForElement(treeViewItem); children.Add(peer); } } return children; } return null; } //-------------------------------------------------------------------- // // ISelectionProvider // //------------------------------------------------------------------- #region ISelectionProvider /// /// Returns the current selection. /// ///The current selection. IRawElementProviderSimple[] ISelectionProvider.GetSelection() { IRawElementProviderSimple[] selection = null; TreeViewItem selectedContainer = ((TreeView)Owner).SelectedContainer; if (selectedContainer != null) { AutomationPeer peer = UIElementAutomationPeer.FromElement(selectedContainer); if (peer != null) { selection = new IRawElementProviderSimple[] { ProviderFromPeer(peer) }; } } if (selection == null) { selection = new IRawElementProviderSimple[0]; } return selection; } bool ISelectionProvider.CanSelectMultiple { get { return false; } } bool ISelectionProvider.IsSelectionRequired { get { return false; } } #endregion } } // 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 TreeViewAutomationPeer : FrameworkElementAutomationPeer, ISelectionProvider { /// public TreeViewAutomationPeer(TreeView owner): base(owner) {} /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Tree; } /// override protected string GetClassNameCore() { return "TreeView"; } /// override public object GetPattern(PatternInterface patternInterface) { if (patternInterface == PatternInterface.Selection) { return this; } else if(patternInterface == PatternInterface.Scroll) { ItemsControl owner = (ItemsControl)Owner; if(owner.ScrollHost != null) { AutomationPeer scrollPeer = UIElementAutomationPeer.CreatePeerForElement(owner.ScrollHost); if(scrollPeer != null && scrollPeer is IScrollProvider) { scrollPeer.EventsSource = this; return (IScrollProvider)scrollPeer; } } } return null; } /// protected override ListGetChildrenCore() { ItemsControl owner = (ItemsControl)Owner; ItemCollection items = owner.Items; if (items.Count > 0) { List children = new List (items.Count); for (int i = 0; i < items.Count; i++) { TreeViewItem treeViewItem = owner.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem; if (treeViewItem != null) { AutomationPeer peer = UIElementAutomationPeer.FromElement(treeViewItem); if (peer == null) peer = UIElementAutomationPeer.CreatePeerForElement(treeViewItem); children.Add(peer); } } return children; } return null; } //-------------------------------------------------------------------- // // ISelectionProvider // //------------------------------------------------------------------- #region ISelectionProvider /// /// Returns the current selection. /// ///The current selection. IRawElementProviderSimple[] ISelectionProvider.GetSelection() { IRawElementProviderSimple[] selection = null; TreeViewItem selectedContainer = ((TreeView)Owner).SelectedContainer; if (selectedContainer != null) { AutomationPeer peer = UIElementAutomationPeer.FromElement(selectedContainer); if (peer != null) { selection = new IRawElementProviderSimple[] { ProviderFromPeer(peer) }; } } if (selection == null) { selection = new IRawElementProviderSimple[0]; } return selection; } bool ISelectionProvider.CanSelectMultiple { get { return false; } } bool ISelectionProvider.IsSelectionRequired { get { return false; } } #endregion } } // 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
- UIElementAutomationPeer.cs
- FileVersion.cs
- JsonByteArrayDataContract.cs
- SqlTrackingService.cs
- SoapEnumAttribute.cs
- PocoPropertyAccessorStrategy.cs
- DataGridViewCellStyleConverter.cs
- Comparer.cs
- ProfileManager.cs
- BorderSidesEditor.cs
- KeyedHashAlgorithm.cs
- TextRangeEdit.cs
- COM2EnumConverter.cs
- CmsInterop.cs
- TaskScheduler.cs
- arclist.cs
- DataContractSerializerOperationFormatter.cs
- TableLayoutRowStyleCollection.cs
- DesignerDataTable.cs
- CachedPathData.cs
- MatcherBuilder.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- SqlUdtInfo.cs
- diagnosticsswitches.cs
- XmlSchemaSimpleContentRestriction.cs
- Geometry.cs
- SqlDataSourceCustomCommandPanel.cs
- FilteredAttributeCollection.cs
- SolidColorBrush.cs
- SamlAttributeStatement.cs
- MarshalDirectiveException.cs
- MessageQueuePermissionAttribute.cs
- DetailsViewUpdateEventArgs.cs
- DataGridViewToolTip.cs
- BaseParagraph.cs
- Int32Animation.cs
- FontSource.cs
- DataColumnChangeEvent.cs
- WorkflowMessageEventHandler.cs
- TreeNode.cs
- Pair.cs
- SoapSchemaImporter.cs
- smtppermission.cs
- SqlProcedureAttribute.cs
- UITypeEditors.cs
- ConfigurationLocationCollection.cs
- IRCollection.cs
- LambdaCompiler.Statements.cs
- MemoryStream.cs
- FontUnit.cs
- Registry.cs
- XNodeValidator.cs
- _LocalDataStore.cs
- ExpressionReplacer.cs
- WsdlBuildProvider.cs
- XmlBinaryWriter.cs
- AdornedElementPlaceholder.cs
- SelectionBorderGlyph.cs
- RegexGroup.cs
- HealthMonitoringSection.cs
- Base64Decoder.cs
- SchemaCollectionPreprocessor.cs
- EnglishPluralizationService.cs
- DelayedRegex.cs
- EdmRelationshipRoleAttribute.cs
- XmlIlTypeHelper.cs
- FixedLineResult.cs
- ObjectListGeneralPage.cs
- invalidudtexception.cs
- PathFigureCollection.cs
- HMACSHA512.cs
- Signature.cs
- LongSumAggregationOperator.cs
- TransactionFormatter.cs
- RoutedEventArgs.cs
- ResourceReferenceExpression.cs
- SessionSwitchEventArgs.cs
- WebPartManager.cs
- CodeExpressionCollection.cs
- SetIterators.cs
- DescriptionAttribute.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- Button.cs
- Parser.cs
- EntityConnection.cs
- PowerStatus.cs
- QueryOperatorEnumerator.cs
- DPTypeDescriptorContext.cs
- XamlDesignerSerializationManager.cs
- XmlUtilWriter.cs
- IgnoreFileBuildProvider.cs
- SequenceDesigner.cs
- DeflateEmulationStream.cs
- XmlCharacterData.cs
- DocumentXmlWriter.cs
- SessionStateUtil.cs
- InputBindingCollection.cs
- BrowserCapabilitiesCodeGenerator.cs
- DataSourceView.cs
- ReachPrintTicketSerializer.cs