Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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 List GetChildrenCore()
{
GroupItem owner = (GroupItem)Owner;
ItemsControl itemsControl = ItemsControl.ItemsControlFromItemContainer(Owner);
if (itemsControl != null)
{
ItemsControlAutomationPeer itemsControlAP = itemsControl.CreateAutomationPeer() as ItemsControlAutomationPeer;
if (itemsControlAP != null)
{
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.
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 List GetChildrenCore()
{
GroupItem owner = (GroupItem)Owner;
ItemsControl itemsControl = ItemsControl.ItemsControlFromItemContainer(Owner);
if (itemsControl != null)
{
ItemsControlAutomationPeer itemsControlAP = itemsControl.CreateAutomationPeer() as ItemsControlAutomationPeer;
if (itemsControlAP != null)
{
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
- InputLangChangeEvent.cs
- DataSetUtil.cs
- Graph.cs
- DataSetMappper.cs
- DoubleCollection.cs
- TextAnchor.cs
- Queue.cs
- StateManagedCollection.cs
- Expression.cs
- TableAdapterManagerHelper.cs
- OletxEnlistment.cs
- DataSysAttribute.cs
- MenuItemStyle.cs
- DetailsViewRow.cs
- ProcessModule.cs
- UnsafeNativeMethods.cs
- UrlMappingsSection.cs
- WebPageTraceListener.cs
- Effect.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- MatrixCamera.cs
- RtType.cs
- HtmlContainerControl.cs
- MethodCallTranslator.cs
- HtmlInputSubmit.cs
- Crc32Helper.cs
- StringPropertyBuilder.cs
- ConnectionModeReader.cs
- DelegateSerializationHolder.cs
- _Win32.cs
- MethodAccessException.cs
- ActivityExecutor.cs
- BinaryNode.cs
- ModifyActivitiesPropertyDescriptor.cs
- ExtendedPropertyCollection.cs
- DataGridViewSelectedCellCollection.cs
- MruCache.cs
- CubicEase.cs
- DBSqlParser.cs
- SmiRequestExecutor.cs
- HMAC.cs
- CircleEase.cs
- IdnElement.cs
- SqlDataSourceCommandEventArgs.cs
- UmAlQuraCalendar.cs
- RootProfilePropertySettingsCollection.cs
- DiscoveryInnerClientAdhoc11.cs
- ZipIORawDataFileBlock.cs
- AnimationClock.cs
- ItemDragEvent.cs
- MethodImplAttribute.cs
- StreamGeometryContext.cs
- InkCanvasSelection.cs
- CryptoConfig.cs
- SignatureConfirmations.cs
- XmlChoiceIdentifierAttribute.cs
- SparseMemoryStream.cs
- PolicyStatement.cs
- ListViewItemSelectionChangedEvent.cs
- UnsafeMethods.cs
- OutputCacheSettings.cs
- OperatingSystem.cs
- MethodBuilder.cs
- _TransmitFileOverlappedAsyncResult.cs
- ListViewGroupConverter.cs
- ComponentCollection.cs
- SymbolEqualComparer.cs
- CommandID.cs
- MenuItemBinding.cs
- FixedDSBuilder.cs
- ExpressionContext.cs
- ObjectContext.cs
- DocumentGridPage.cs
- CodeTypeMember.cs
- WindowsIPAddress.cs
- ButtonBaseAutomationPeer.cs
- HtmlButton.cs
- Canvas.cs
- Menu.cs
- KeyProperty.cs
- HttpHandlersSection.cs
- StringExpressionSet.cs
- DrawingBrush.cs
- Attachment.cs
- RoleProviderPrincipal.cs
- ConfigXmlElement.cs
- TableItemPattern.cs
- CodeMethodReturnStatement.cs
- ImmutableDispatchRuntime.cs
- QilInvoke.cs
- FamilyMap.cs
- BitmapData.cs
- MetabaseSettings.cs
- SourceFileBuildProvider.cs
- ComponentTray.cs
- ManagementObjectCollection.cs
- _CommandStream.cs
- TabControlEvent.cs
- GuidTagList.cs
- PropertyGridCommands.cs