Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- DataStreamFromComStream.cs
- DataGridViewRowPostPaintEventArgs.cs
- PageCatalogPart.cs
- EpmTargetTree.cs
- IntellisenseTextBox.designer.cs
- AppDomainFactory.cs
- WCFServiceClientProxyGenerator.cs
- ToolStripOverflow.cs
- TemplateBindingExtensionConverter.cs
- HttpApplication.cs
- BufferedStream.cs
- LoginCancelEventArgs.cs
- FontCacheLogic.cs
- KernelTypeValidation.cs
- BezierSegment.cs
- DataSourceDesigner.cs
- Literal.cs
- DSASignatureFormatter.cs
- GenerateTemporaryTargetAssembly.cs
- DataGridViewTextBoxEditingControl.cs
- LeafCellTreeNode.cs
- SchemaNames.cs
- TransformerConfigurationWizardBase.cs
- RegexNode.cs
- FileUpload.cs
- SecurityTokenSerializer.cs
- DataGridCell.cs
- IPEndPointCollection.cs
- followingquery.cs
- BindingCompleteEventArgs.cs
- FacetDescriptionElement.cs
- HMACSHA256.cs
- BidirectionalDictionary.cs
- MsmqInputMessagePool.cs
- RoutedUICommand.cs
- _SecureChannel.cs
- Path.cs
- TreeWalker.cs
- MultipartContentParser.cs
- MarkupWriter.cs
- ForceCopyBuildProvider.cs
- SynchronizationScope.cs
- Attribute.cs
- DeleteHelper.cs
- _NtlmClient.cs
- ComplexType.cs
- PointCollection.cs
- ObjectSecurity.cs
- GC.cs
- GenericEnumerator.cs
- PageContentCollection.cs
- FontDriver.cs
- PageCatalogPart.cs
- Panel.cs
- DataRecord.cs
- WebPartEditorApplyVerb.cs
- Base64Decoder.cs
- XPathDocument.cs
- TimeZone.cs
- InkCanvas.cs
- Activator.cs
- ArrayTypeMismatchException.cs
- CachedTypeface.cs
- OracleConnection.cs
- SmtpNegotiateAuthenticationModule.cs
- ReadOnlyHierarchicalDataSource.cs
- ParseHttpDate.cs
- Emitter.cs
- FragmentQueryProcessor.cs
- Marshal.cs
- AnnotationComponentChooser.cs
- Visual3DCollection.cs
- ConfigurationLocation.cs
- LinkUtilities.cs
- CommandEventArgs.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SrgsDocumentParser.cs
- WebBrowserNavigatedEventHandler.cs
- WebHttpBindingCollectionElement.cs
- GatewayDefinition.cs
- XmlSchemaElement.cs
- Int32Animation.cs
- backend.cs
- TextBoxAutoCompleteSourceConverter.cs
- ApplyHostConfigurationBehavior.cs
- HostedTransportConfigurationManager.cs
- EncoderParameters.cs
- TextModifier.cs
- AsyncPostBackTrigger.cs
- ServiceChannelManager.cs
- EventPropertyMap.cs
- TriggerActionCollection.cs
- ComplexPropertyEntry.cs
- RegexRunner.cs
- SafeArrayTypeMismatchException.cs
- JapaneseLunisolarCalendar.cs
- AutoResetEvent.cs
- ExternalCalls.cs
- SerializerDescriptor.cs
- SparseMemoryStream.cs