Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / GridViewItemAutomationPeer.cs / 1305600 / 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
- TypeLibConverter.cs
- TextTreeText.cs
- NumberAction.cs
- UserPreferenceChangingEventArgs.cs
- DataObjectPastingEventArgs.cs
- CompilerWrapper.cs
- XsdCachingReader.cs
- FixedSOMLineCollection.cs
- MemoryStream.cs
- Pair.cs
- HotSpot.cs
- XPathSelectionIterator.cs
- Unit.cs
- GridViewDeleteEventArgs.cs
- FontStretch.cs
- PropertyRef.cs
- SecurityChannel.cs
- SqlConnectionString.cs
- SelectionWordBreaker.cs
- FormViewInsertEventArgs.cs
- SafeUserTokenHandle.cs
- shaper.cs
- EventLogInformation.cs
- RuntimeArgument.cs
- IntPtr.cs
- ObjectReaderCompiler.cs
- DBSqlParserTable.cs
- ResourceExpression.cs
- PersonalizationProviderCollection.cs
- RSACryptoServiceProvider.cs
- ClientRuntimeConfig.cs
- PreProcessInputEventArgs.cs
- SqlFactory.cs
- DataSourceDesigner.cs
- UriScheme.cs
- ScrollEvent.cs
- EmptyCollection.cs
- Properties.cs
- ToolStripPanelRow.cs
- ToolboxDataAttribute.cs
- FlowDocumentScrollViewer.cs
- PreviewControlDesigner.cs
- Compiler.cs
- SrgsSubset.cs
- WhiteSpaceTrimStringConverter.cs
- ResourceProviderFactory.cs
- Registration.cs
- BidOverLoads.cs
- RegexStringValidatorAttribute.cs
- TrustLevelCollection.cs
- SamlAssertion.cs
- ResourcesBuildProvider.cs
- Pen.cs
- WebBrowsableAttribute.cs
- WaveHeader.cs
- FileNameEditor.cs
- ServiceNameElementCollection.cs
- MailAddress.cs
- ReadOnlyHierarchicalDataSource.cs
- StructuralObject.cs
- TargetParameterCountException.cs
- SrgsRule.cs
- DynamicResourceExtensionConverter.cs
- SystemIPv6InterfaceProperties.cs
- CopyCodeAction.cs
- DefaultPropertyAttribute.cs
- ParameterToken.cs
- Misc.cs
- EventDescriptor.cs
- WindowCollection.cs
- PenContexts.cs
- FormViewModeEventArgs.cs
- DifferencingCollection.cs
- BindableAttribute.cs
- FontEmbeddingManager.cs
- FontWeightConverter.cs
- DesignerTextViewAdapter.cs
- SqlCacheDependency.cs
- PromptStyle.cs
- XsltLibrary.cs
- IndentTextWriter.cs
- SQLInt16Storage.cs
- MachineKeySection.cs
- IncrementalHitTester.cs
- AsyncDataRequest.cs
- ConfigXmlWhitespace.cs
- RegexMatchCollection.cs
- XmlNavigatorStack.cs
- ResizeBehavior.cs
- Point3DAnimationUsingKeyFrames.cs
- Line.cs
- WebServiceFault.cs
- FrameworkContentElement.cs
- StringToken.cs
- ArgumentFixer.cs
- IPGlobalProperties.cs
- BaseParser.cs
- DefaultMemberAttribute.cs
- SessionStateItemCollection.cs
- FormViewPagerRow.cs