Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Automation / Peers / ItemAutomationPeer.cs / 1 / ItemAutomationPeer.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 abstract class ItemAutomationPeer : AutomationPeer
{
///
protected ItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer): base()
{
_item = item;
_itemsControlAutomationPeer = itemsControlAutomationPeer;
}
internal UIElement GetWrapper()
{
UIElement wrapper = null;
ItemsControl owner = (ItemsControl)(_itemsControlAutomationPeer.Owner);
if (owner != null)
{
if (((MS.Internal.Controls.IGeneratorHost)owner).IsItemItsOwnContainer(_item))
wrapper = _item as UIElement;
else
wrapper = owner.ItemContainerGenerator.ContainerFromItem(_item) as UIElement;
}
return wrapper;
}
internal AutomationPeer GetWrapperPeer()
{
AutomationPeer wrapperPeer = null;
UIElement wrapper = GetWrapper();
if(wrapper != null)
{
wrapperPeer = UIElementAutomationPeer.CreatePeerForElement(wrapper);
if(wrapperPeer == null) //fall back to default peer if there is no specific one
{
if(wrapper is FrameworkElement)
wrapperPeer = new FrameworkElementAutomationPeer((FrameworkElement)wrapper);
else
wrapperPeer = new UIElementAutomationPeer(wrapper);
}
}
return wrapperPeer;
}
///
override protected string GetItemTypeCore()
{
return string.Empty;
}
///
protected override List GetChildrenCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
{
//We need to update children here since the
wrapperPeer.UpdateSubtree();
List children = wrapperPeer.GetChildren();
return children;
}
return null;
}
///
protected override Rect GetBoundingRectangleCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetBoundingRectangle();
else
return new Rect();
}
///
protected override bool IsOffscreenCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsOffscreen();
else
return true;
}
///
protected override AutomationOrientation GetOrientationCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetOrientation();
else
return AutomationOrientation.None;
}
///
protected override string GetItemStatusCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetItemStatus();
else
return string.Empty;
}
///
protected override bool IsRequiredForFormCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsRequiredForForm();
else
return false;
}
///
protected override bool IsKeyboardFocusableCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsKeyboardFocusable();
else
return false;
}
///
protected override bool HasKeyboardFocusCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.HasKeyboardFocus();
else
return false;
}
///
protected override bool IsEnabledCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsEnabled();
else
return false;
}
///
protected override bool IsPasswordCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsPassword();
else
return false;
}
///
protected override string GetAutomationIdCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetAutomationId();
else
return string.Empty;
}
///
protected override string GetNameCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
string name = null;
if(wrapperPeer != null)
name = wrapperPeer.GetName();
if(name == null && _item is string)
name = (string)_item;
if(name == null)
name = string.Empty;
return name;
}
///
protected override bool IsContentElementCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsContentElement();
else
return true;
}
///
protected override bool IsControlElementCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsControlElement();
else
return true;
}
///
protected override AutomationPeer GetLabeledByCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetLabeledBy();
else
return null;
}
///
protected override string GetHelpTextCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetHelpText();
else
return string.Empty;
}
///
protected override string GetAcceleratorKeyCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetAcceleratorKey();
else
return string.Empty;
}
///
protected override string GetAccessKeyCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetAccessKey();
else
return string.Empty;
}
///
protected override Point GetClickablePointCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetClickablePoint();
else
return new Point(double.NaN, double.NaN);
}
///
protected override void SetFocusCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
wrapperPeer.SetFocus();
}
///
public object Item
{
get
{
return _item;
}
}
///
public ItemsControlAutomationPeer ItemsControlAutomationPeer
{
get
{
return _itemsControlAutomationPeer;
}
}
private object _item;
private ItemsControlAutomationPeer _itemsControlAutomationPeer;
}
}
// 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 abstract class ItemAutomationPeer : AutomationPeer
{
///
protected ItemAutomationPeer(object item, ItemsControlAutomationPeer itemsControlAutomationPeer): base()
{
_item = item;
_itemsControlAutomationPeer = itemsControlAutomationPeer;
}
internal UIElement GetWrapper()
{
UIElement wrapper = null;
ItemsControl owner = (ItemsControl)(_itemsControlAutomationPeer.Owner);
if (owner != null)
{
if (((MS.Internal.Controls.IGeneratorHost)owner).IsItemItsOwnContainer(_item))
wrapper = _item as UIElement;
else
wrapper = owner.ItemContainerGenerator.ContainerFromItem(_item) as UIElement;
}
return wrapper;
}
internal AutomationPeer GetWrapperPeer()
{
AutomationPeer wrapperPeer = null;
UIElement wrapper = GetWrapper();
if(wrapper != null)
{
wrapperPeer = UIElementAutomationPeer.CreatePeerForElement(wrapper);
if(wrapperPeer == null) //fall back to default peer if there is no specific one
{
if(wrapper is FrameworkElement)
wrapperPeer = new FrameworkElementAutomationPeer((FrameworkElement)wrapper);
else
wrapperPeer = new UIElementAutomationPeer(wrapper);
}
}
return wrapperPeer;
}
///
override protected string GetItemTypeCore()
{
return string.Empty;
}
///
protected override List GetChildrenCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
{
//We need to update children here since the
wrapperPeer.UpdateSubtree();
List children = wrapperPeer.GetChildren();
return children;
}
return null;
}
///
protected override Rect GetBoundingRectangleCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetBoundingRectangle();
else
return new Rect();
}
///
protected override bool IsOffscreenCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsOffscreen();
else
return true;
}
///
protected override AutomationOrientation GetOrientationCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetOrientation();
else
return AutomationOrientation.None;
}
///
protected override string GetItemStatusCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetItemStatus();
else
return string.Empty;
}
///
protected override bool IsRequiredForFormCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsRequiredForForm();
else
return false;
}
///
protected override bool IsKeyboardFocusableCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsKeyboardFocusable();
else
return false;
}
///
protected override bool HasKeyboardFocusCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.HasKeyboardFocus();
else
return false;
}
///
protected override bool IsEnabledCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsEnabled();
else
return false;
}
///
protected override bool IsPasswordCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsPassword();
else
return false;
}
///
protected override string GetAutomationIdCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetAutomationId();
else
return string.Empty;
}
///
protected override string GetNameCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
string name = null;
if(wrapperPeer != null)
name = wrapperPeer.GetName();
if(name == null && _item is string)
name = (string)_item;
if(name == null)
name = string.Empty;
return name;
}
///
protected override bool IsContentElementCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsContentElement();
else
return true;
}
///
protected override bool IsControlElementCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.IsControlElement();
else
return true;
}
///
protected override AutomationPeer GetLabeledByCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetLabeledBy();
else
return null;
}
///
protected override string GetHelpTextCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetHelpText();
else
return string.Empty;
}
///
protected override string GetAcceleratorKeyCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetAcceleratorKey();
else
return string.Empty;
}
///
protected override string GetAccessKeyCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetAccessKey();
else
return string.Empty;
}
///
protected override Point GetClickablePointCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
return wrapperPeer.GetClickablePoint();
else
return new Point(double.NaN, double.NaN);
}
///
protected override void SetFocusCore()
{
AutomationPeer wrapperPeer = GetWrapperPeer();
if(wrapperPeer != null)
wrapperPeer.SetFocus();
}
///
public object Item
{
get
{
return _item;
}
}
///
public ItemsControlAutomationPeer ItemsControlAutomationPeer
{
get
{
return _itemsControlAutomationPeer;
}
}
private object _item;
private ItemsControlAutomationPeer _itemsControlAutomationPeer;
}
}
// 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
- RectAnimationUsingKeyFrames.cs
- InstanceContextManager.cs
- CqlWriter.cs
- DateTimeOffsetStorage.cs
- AssemblyAttributes.cs
- DataGridViewCheckBoxColumn.cs
- Message.cs
- CellRelation.cs
- ModulesEntry.cs
- Choices.cs
- FlowDocumentPaginator.cs
- COM2ExtendedUITypeEditor.cs
- Point3DCollectionConverter.cs
- CodeIdentifiers.cs
- LinqDataSourceHelper.cs
- PieceDirectory.cs
- BoundPropertyEntry.cs
- ResXResourceWriter.cs
- RelationshipSet.cs
- BuildProviderAppliesToAttribute.cs
- RequestQueue.cs
- BuildProvider.cs
- XmlDataImplementation.cs
- ListBoxItem.cs
- NotCondition.cs
- IdentitySection.cs
- RadioButtonStandardAdapter.cs
- StylusDownEventArgs.cs
- ExtensibleClassFactory.cs
- IImplicitResourceProvider.cs
- PresentationAppDomainManager.cs
- NativeMethods.cs
- StatusStrip.cs
- SignedInfo.cs
- WebPartDisplayModeEventArgs.cs
- HttpModuleCollection.cs
- _ProxyRegBlob.cs
- DbReferenceCollection.cs
- OracleSqlParser.cs
- ZipIOBlockManager.cs
- AppDomainProtocolHandler.cs
- TreeViewCancelEvent.cs
- RecognizerStateChangedEventArgs.cs
- UnknownBitmapDecoder.cs
- Profiler.cs
- ParagraphVisual.cs
- StoryFragments.cs
- TextBox.cs
- ItemList.cs
- COM2IPerPropertyBrowsingHandler.cs
- List.cs
- IndependentAnimationStorage.cs
- SqlDataSourceCustomCommandEditor.cs
- ZipIOLocalFileDataDescriptor.cs
- ObfuscateAssemblyAttribute.cs
- ThicknessAnimationBase.cs
- ChineseLunisolarCalendar.cs
- DataGridViewCellStyleChangedEventArgs.cs
- PropertyPushdownHelper.cs
- XamlPathDataSerializer.cs
- DateTimeHelper.cs
- SqlTriggerAttribute.cs
- SecurityDocument.cs
- WithStatement.cs
- Opcode.cs
- MeshGeometry3D.cs
- FamilyCollection.cs
- Form.cs
- CacheAxisQuery.cs
- BinaryMethodMessage.cs
- JobDuplex.cs
- FlowDocument.cs
- FontInfo.cs
- DebugView.cs
- SqlDataSourceFilteringEventArgs.cs
- XmlWrappingReader.cs
- SqlProvider.cs
- xdrvalidator.cs
- TemplateBuilder.cs
- DBSqlParserColumnCollection.cs
- CharEntityEncoderFallback.cs
- RelationshipManager.cs
- Camera.cs
- Pipe.cs
- NoClickablePointException.cs
- DataContractSet.cs
- DeferredElementTreeState.cs
- RepeaterItem.cs
- selecteditemcollection.cs
- EntityClientCacheEntry.cs
- ResourceSetExpression.cs
- EventWaitHandleSecurity.cs
- Exceptions.cs
- DBConcurrencyException.cs
- ControlBuilder.cs
- FormsAuthenticationModule.cs
- WebConfigurationManager.cs
- DotExpr.cs
- BindingsCollection.cs
- sqlmetadatafactory.cs