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
- FixedStringLookup.cs
- StoragePropertyMapping.cs
- TypedElement.cs
- WindowsTreeView.cs
- WorkflowApplicationTerminatedException.cs
- SendActivity.cs
- DynamicRenderer.cs
- DataView.cs
- EventArgs.cs
- Pool.cs
- PropertyInfoSet.cs
- ExpressionBuilder.cs
- Process.cs
- Funcletizer.cs
- TemplatePagerField.cs
- StringStorage.cs
- NamespaceDisplay.xaml.cs
- OracleLob.cs
- SecurityKeyType.cs
- XmlAttributes.cs
- EntityAdapter.cs
- RawMouseInputReport.cs
- PartitionerStatic.cs
- MinimizableAttributeTypeConverter.cs
- HyperLinkStyle.cs
- hresults.cs
- WriteTimeStream.cs
- RuleRefElement.cs
- RectangleConverter.cs
- PrinterSettings.cs
- ServiceReference.cs
- RSAProtectedConfigurationProvider.cs
- FacetDescription.cs
- SizeValueSerializer.cs
- ByteStream.cs
- DBCommand.cs
- CallContext.cs
- CellParaClient.cs
- DataGridViewAccessibleObject.cs
- SkewTransform.cs
- XmlSchemaValidationException.cs
- ApplicationException.cs
- CustomGrammar.cs
- ParentQuery.cs
- FontStyle.cs
- SmiEventStream.cs
- ClientSettings.cs
- DesignRelationCollection.cs
- ThreadStaticAttribute.cs
- ObjectListCommandCollection.cs
- PenThread.cs
- SimplePropertyEntry.cs
- PTManager.cs
- InvalidOperationException.cs
- BypassElement.cs
- DataGridViewColumnTypePicker.cs
- Panel.cs
- XmlToDatasetMap.cs
- CurrencyManager.cs
- GlyphManager.cs
- WindowsFormsLinkLabel.cs
- storagemappingitemcollection.viewdictionary.cs
- DataGridColumnReorderingEventArgs.cs
- MimeMapping.cs
- ProcessHostFactoryHelper.cs
- CacheForPrimitiveTypes.cs
- RtfToken.cs
- WebPartCollection.cs
- ReadOnlyPropertyMetadata.cs
- DiscardableAttribute.cs
- BinaryConverter.cs
- OletxVolatileEnlistment.cs
- DbConnectionPoolOptions.cs
- HTMLTextWriter.cs
- TextEditorCopyPaste.cs
- DetailsViewPagerRow.cs
- odbcmetadatafactory.cs
- HealthMonitoringSectionHelper.cs
- DataSvcMapFile.cs
- WindowsFormsHelpers.cs
- RenderTargetBitmap.cs
- WorkflowWebHostingModule.cs
- Currency.cs
- DrawingGroupDrawingContext.cs
- ImageDrawing.cs
- FunctionImportElement.cs
- KeyValueInternalCollection.cs
- ToolStripCollectionEditor.cs
- MenuBindingsEditorForm.cs
- PrintingPermission.cs
- TTSEngineProxy.cs
- ResourceDictionaryCollection.cs
- MetaForeignKeyColumn.cs
- InheritanceAttribute.cs
- Grid.cs
- DataConnectionHelper.cs
- Win32.cs
- CommentAction.cs
- smtppermission.cs
- NetworkInterface.cs