Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Automation / Peers / GroupItemAutomationPeer.cs / 1 / GroupItemAutomationPeer.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.Data; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class GroupItemAutomationPeer : FrameworkElementAutomationPeer { /// public GroupItemAutomationPeer(GroupItem owner): base(owner) { } /// override protected string GetClassNameCore() { return "GroupItem"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Group; } /// protected override ListGetChildrenCore() { GroupItem owner = (GroupItem)Owner; ItemsControl itemsControl = ItemsControl.ItemsControlFromItemContainer(Owner); ItemsControlAutomationPeer itemsControlAP = itemsControl.CreateAutomationPeer() as ItemsControlAutomationPeer; ItemContainerGenerator generator = owner.Generator; if (generator != null) { IList items = generator.Items; List children = new List (items.Count); ItemPeersStorage oldChildren = _dataChildren; //cache the old ones for possible reuse _dataChildren = new ItemPeersStorage(); if (items.Count > 0) { foreach (object item in items) { CollectionViewGroup cvg = item as CollectionViewGroup; if (cvg != null) { GroupItem groupItem = generator.ContainerFromItem(item) as GroupItem; if (groupItem != null) { GroupItemAutomationPeer peer = groupItem.CreateAutomationPeer() as GroupItemAutomationPeer; if (peer != null) children.Add(peer); } } else { //try to reuse old peer if it exists ItemAutomationPeer peer = oldChildren[item]; //no old peer - create new one if (peer == null) peer = itemsControlAP.CreateItemAutomationPeerInternal(item); //perform hookup so the events sourced from wrapper peer are fired as if from the data item if (peer != null) { AutomationPeer wrapperPeer = peer.GetWrapperPeer(); if (wrapperPeer != null) wrapperPeer.EventsSource = peer; } //protection from indistinguishable items - for example, 2 strings with same value //this scenario does not work in ItemsControl however is not checked for. if (_dataChildren[item] == null) { children.Add(peer); _dataChildren[item] = peer; // Update ItemsControl cache too // ItemPeers needs to be updated because used in Selector and other ItemsControl subclasses to access item peers directly if (itemsControlAP.ItemPeers[item] == null) { itemsControlAP.ItemPeers[item] = peer; } } } } return children; } } return null; } private ItemPeersStorage _dataChildren = new ItemPeersStorage(); } } // 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
- BreakRecordTable.cs
- PlainXmlDeserializer.cs
- CompilationSection.cs
- ValidationPropertyAttribute.cs
- SmiSettersStream.cs
- CollectionBase.cs
- PeerChannelListener.cs
- Int16Converter.cs
- CredentialCache.cs
- BaseComponentEditor.cs
- JsonWriter.cs
- TitleStyle.cs
- ObjectReaderCompiler.cs
- SqlClientMetaDataCollectionNames.cs
- ListViewDataItem.cs
- OperationAbortedException.cs
- MsmqIntegrationChannelListener.cs
- HtmlTextArea.cs
- ContractCodeDomInfo.cs
- TTSEngineProxy.cs
- SqlHelper.cs
- AnalyzedTree.cs
- RadioButtonRenderer.cs
- ImpersonateTokenRef.cs
- PiiTraceSource.cs
- WebServiceParameterData.cs
- Pen.cs
- RequestCachePolicy.cs
- COAUTHINFO.cs
- coordinatorfactory.cs
- Guid.cs
- ExpressionBuilder.cs
- XmlReflectionMember.cs
- EntityDataSourceWrapperCollection.cs
- MouseGestureConverter.cs
- PropertyChangingEventArgs.cs
- SqlDataSourceSummaryPanel.cs
- StringBuilder.cs
- sqlser.cs
- XmlRootAttribute.cs
- ProxyWebPart.cs
- ProcessHost.cs
- HtmlElement.cs
- ListControl.cs
- DynamicQueryableWrapper.cs
- SymLanguageVendor.cs
- Function.cs
- WorkflowTraceTransfer.cs
- OdbcEnvironment.cs
- Pen.cs
- FocusWithinProperty.cs
- EditingCoordinator.cs
- SuppressIldasmAttribute.cs
- UnsafeNativeMethods.cs
- KeyFrames.cs
- MenuItemCollection.cs
- versioninfo.cs
- WebPartDisplayMode.cs
- CodeMethodReturnStatement.cs
- HttpConfigurationSystem.cs
- PropertyValueUIItem.cs
- RegexMatchCollection.cs
- SqlInternalConnectionSmi.cs
- SQLInt16.cs
- Identity.cs
- LocalizationCodeDomSerializer.cs
- Regex.cs
- DetailsViewPageEventArgs.cs
- ObjectIDGenerator.cs
- FixedSOMTextRun.cs
- PackageStore.cs
- DesignerActionList.cs
- safesecurityhelperavalon.cs
- HtmlSelect.cs
- MsmqHostedTransportConfiguration.cs
- SmiContext.cs
- ProtectedConfigurationProviderCollection.cs
- SearchForVirtualItemEventArgs.cs
- WpfWebRequestHelper.cs
- DecimalAnimationUsingKeyFrames.cs
- WebConvert.cs
- XmlReturnWriter.cs
- GridViewRow.cs
- ExpressionBuilder.cs
- Error.cs
- ServiceContractDetailViewControl.cs
- MouseGesture.cs
- MetadataCollection.cs
- TdsParser.cs
- CqlIdentifiers.cs
- RequestCacheEntry.cs
- ProviderException.cs
- TextElementAutomationPeer.cs
- _ShellExpression.cs
- UiaCoreApi.cs
- MultipartContentParser.cs
- GetPageNumberCompletedEventArgs.cs
- StrokeDescriptor.cs
- ConfigurationStrings.cs
- FileDetails.cs