Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Automation / Peers / GridViewItemAutomationPeer.cs / 1 / GridViewItemAutomationPeer.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;
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 GridViewItemAutomationPeer : ListBoxItemAutomationPeer
{
///
public GridViewItemAutomationPeer(object owner, ListViewAutomationPeer listviewAP)
: base(owner, listviewAP)
{
Invariant.Assert(owner != null);
Invariant.Assert(listviewAP != null);
_item = owner;
_listviewAP = listviewAP;
}
///
override protected string GetClassNameCore()
{
return "ListViewItem";
}
///
override protected AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.DataItem;
}
///
protected override List GetChildrenCore()
{
ListView listview = _listviewAP.Owner as ListView;
Invariant.Assert(listview != null);
ListViewItem lvi = listview.ItemContainerGenerator.ContainerFromItem(_item) as ListViewItem;
if (lvi != null)
{
GridViewRowPresenter rowPresenter = GridViewAutomationPeer.FindVisualByType(lvi, typeof(GridViewRowPresenter)) as GridViewRowPresenter;
if (rowPresenter != null)
{
Hashtable oldChildren = _dataChildren; //cache the old ones for possible reuse
_dataChildren = new Hashtable(rowPresenter.ActualCells.Count);
List list = new List();
int row = listview.Items.IndexOf(_item);
int column = 0;
foreach (UIElement ele in rowPresenter.ActualCells)
{
GridViewCellAutomationPeer peer = (oldChildren == null ? null : (GridViewCellAutomationPeer)oldChildren[ele]);
if (peer == null)
{
if (ele is ContentPresenter)
{
peer = new GridViewCellAutomationPeer((ContentPresenter)ele, _listviewAP);
}
else if (ele is TextBlock)
{
peer = new GridViewCellAutomationPeer((TextBlock)ele, _listviewAP);
}
else
{
Invariant.Assert(false, "Children of GridViewRowPresenter should be ContentPresenter or TextBlock");
}
}
//protection from indistinguishable UIElement - for example, 2 UIElement wiht same value
if (_dataChildren[ele] == null)
{
//Set Cell's row and column
peer.Column = column;
peer.Row = row;
list.Add(peer);
_dataChildren.Add(ele, peer);
column++;
}
}
return list;
}
}
return null;
}
#region Private Fields
private object _item;
private ListViewAutomationPeer _listviewAP;
private Hashtable _dataChildren = null;
#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;
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 GridViewItemAutomationPeer : ListBoxItemAutomationPeer
{
///
public GridViewItemAutomationPeer(object owner, ListViewAutomationPeer listviewAP)
: base(owner, listviewAP)
{
Invariant.Assert(owner != null);
Invariant.Assert(listviewAP != null);
_item = owner;
_listviewAP = listviewAP;
}
///
override protected string GetClassNameCore()
{
return "ListViewItem";
}
///
override protected AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.DataItem;
}
///
protected override List GetChildrenCore()
{
ListView listview = _listviewAP.Owner as ListView;
Invariant.Assert(listview != null);
ListViewItem lvi = listview.ItemContainerGenerator.ContainerFromItem(_item) as ListViewItem;
if (lvi != null)
{
GridViewRowPresenter rowPresenter = GridViewAutomationPeer.FindVisualByType(lvi, typeof(GridViewRowPresenter)) as GridViewRowPresenter;
if (rowPresenter != null)
{
Hashtable oldChildren = _dataChildren; //cache the old ones for possible reuse
_dataChildren = new Hashtable(rowPresenter.ActualCells.Count);
List list = new List();
int row = listview.Items.IndexOf(_item);
int column = 0;
foreach (UIElement ele in rowPresenter.ActualCells)
{
GridViewCellAutomationPeer peer = (oldChildren == null ? null : (GridViewCellAutomationPeer)oldChildren[ele]);
if (peer == null)
{
if (ele is ContentPresenter)
{
peer = new GridViewCellAutomationPeer((ContentPresenter)ele, _listviewAP);
}
else if (ele is TextBlock)
{
peer = new GridViewCellAutomationPeer((TextBlock)ele, _listviewAP);
}
else
{
Invariant.Assert(false, "Children of GridViewRowPresenter should be ContentPresenter or TextBlock");
}
}
//protection from indistinguishable UIElement - for example, 2 UIElement wiht same value
if (_dataChildren[ele] == null)
{
//Set Cell's row and column
peer.Column = column;
peer.Row = row;
list.Add(peer);
_dataChildren.Add(ele, peer);
column++;
}
}
return list;
}
}
return null;
}
#region Private Fields
private object _item;
private ListViewAutomationPeer _listviewAP;
private Hashtable _dataChildren = null;
#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
- HwndSourceKeyboardInputSite.cs
- SqlDataSourceSelectingEventArgs.cs
- SelectingProviderEventArgs.cs
- _PooledStream.cs
- X509InitiatorCertificateServiceElement.cs
- ScriptResourceInfo.cs
- TransformCollection.cs
- SyndicationDeserializer.cs
- CursorInteropHelper.cs
- DropShadowEffect.cs
- ControlCollection.cs
- KeyFrames.cs
- ComplexTypeEmitter.cs
- ToolstripProfessionalRenderer.cs
- SecurityTokenException.cs
- DataControlFieldCell.cs
- XmlArrayItemAttribute.cs
- IODescriptionAttribute.cs
- DefaultTextStore.cs
- BlockCollection.cs
- EncryptedKey.cs
- RegexFCD.cs
- SqlServer2KCompatibilityCheck.cs
- XPathSelectionIterator.cs
- FontFamilyIdentifier.cs
- DataReceivedEventArgs.cs
- DynamicMethod.cs
- HashJoinQueryOperatorEnumerator.cs
- BulletedList.cs
- AuthenticationService.cs
- WebServiceErrorEvent.cs
- CommonProperties.cs
- FileDetails.cs
- File.cs
- SchemaTypeEmitter.cs
- XmlQueryContext.cs
- DrawingServices.cs
- PackWebResponse.cs
- ClientConfigPaths.cs
- HtmlInputText.cs
- LockedActivityGlyph.cs
- printdlgexmarshaler.cs
- RandomNumberGenerator.cs
- ConstructorBuilder.cs
- SuppressedPackageProperties.cs
- TextEditorCopyPaste.cs
- DbTransaction.cs
- AnnotationDocumentPaginator.cs
- LogArchiveSnapshot.cs
- TypeSystemProvider.cs
- InputBindingCollection.cs
- SQLSingle.cs
- ConfigurationPropertyCollection.cs
- DocumentViewer.cs
- MobileRedirect.cs
- LogicalTreeHelper.cs
- SqlDataAdapter.cs
- AudioDeviceOut.cs
- SignedPkcs7.cs
- Decimal.cs
- SSmlParser.cs
- DependencyObjectProvider.cs
- WebConvert.cs
- HtmlInputControl.cs
- FontFamilyIdentifier.cs
- EncryptedPackageFilter.cs
- ResourceProviderFactory.cs
- Compress.cs
- SqlReferenceCollection.cs
- ObfuscationAttribute.cs
- ContextMenuService.cs
- ReferentialConstraint.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- SqlRecordBuffer.cs
- RuntimeHelpers.cs
- HasCopySemanticsAttribute.cs
- MsdtcClusterUtils.cs
- UnsafeNativeMethodsTablet.cs
- DefaultAssemblyResolver.cs
- TakeQueryOptionExpression.cs
- ContractInstanceProvider.cs
- SerialErrors.cs
- IOThreadTimer.cs
- TextLineBreak.cs
- RegexCompiler.cs
- DetailsViewUpdatedEventArgs.cs
- StreamGeometry.cs
- FixedPageStructure.cs
- Int32Rect.cs
- XmlAttributeCache.cs
- ManualResetEvent.cs
- DateTimeEditor.cs
- Descriptor.cs
- XPathMessageFilterElement.cs
- XsltArgumentList.cs
- SqlParameter.cs
- DefaultTextStore.cs
- ContainerControl.cs
- QuotedPairReader.cs
- XmlNavigatorStack.cs