Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / Automation / ItemContainerProviderWrapper.cs / 1305600 / ItemContainerProviderWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Item Container pattern provider wrapper for WPF // // History: // 10/22/2008 : [....] - created // //--------------------------------------------------------------------------- using System; using System.Windows.Threading; using System.Windows.Media; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows.Automation.Peers; namespace MS.Internal.Automation { // Automation/WPF Wrapper class: Implements that UIAutomation I...Provider // interface, and calls through to a WPF AutomationPeer which implements the corresponding // I...Provider inteface. Marshalls the call from the RPC thread onto the // target AutomationPeer's context. // // Class has two major parts to it: // * Implementation of the I...Provider, which uses Dispatcher.Invoke // to call a private method (lives in second half of the class) via a delegate, // if necessary, packages any params into an object param. Return type of Invoke // must be cast from object to appropriate type. // * private methods - one for each interface entry point - which get called back // on the right context. These call through to the peer that's actually // implenting the I...Provider version of the interface. internal class ItemContainerProviderWrapper : MarshalByRefObject, IItemContainerProvider { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors private ItemContainerProviderWrapper(AutomationPeer peer, IItemContainerProvider iface) { _peer = peer; _iface = iface; } #endregion Constructors //------------------------------------------------------ // // Interface IItemContainerProvider // //----------------------------------------------------- #region Interface IItemContainerProvider public IRawElementProviderSimple FindItemByProperty(IRawElementProviderSimple startAfter, int propertyId, object value) { object [] args = new object[]{startAfter, propertyId, value}; return (IRawElementProviderSimple)ElementUtil.Invoke(_peer, new DispatcherOperationCallback(FindItemByProperty), args); } #endregion Interface IItemContainerProvider //------------------------------------------------------ // // Internal Methods // //------------------------------------------------------ #region Internal Methods internal static object Wrap(AutomationPeer peer, object iface) { return new ItemContainerProviderWrapper(peer, (IItemContainerProvider)iface); } #endregion Internal Methods //----------------------------------------------------- // // Private Methods // //------------------------------------------------------ #region Private Methods private object FindItemByProperty(object arg) { object[] args = (object[])arg; IRawElementProviderSimple startAfter = (IRawElementProviderSimple)args[0]; int propertyId = (int)args[1]; object value = (object)args[2]; return _iface.FindItemByProperty(startAfter, propertyId, value); } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //----------------------------------------------------- #region Private Fields private AutomationPeer _peer; private IItemContainerProvider _iface; #endregion Private Fields } } // 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
- SQLInt32.cs
- DataBindingList.cs
- XmlSchemaGroupRef.cs
- NameSpaceEvent.cs
- DataKey.cs
- QuaternionAnimation.cs
- PEFileEvidenceFactory.cs
- Accessible.cs
- Trigger.cs
- SqlColumnizer.cs
- MemberInfoSerializationHolder.cs
- TabControlCancelEvent.cs
- CacheSection.cs
- ParseElement.cs
- XmlSchemaGroup.cs
- XmlUnspecifiedAttribute.cs
- ShaderEffect.cs
- ItemContainerGenerator.cs
- XmlSchemaFacet.cs
- CodeDomLoader.cs
- ADMembershipProvider.cs
- ProxySimple.cs
- ServerIdentity.cs
- FontFamily.cs
- Drawing.cs
- CapabilitiesAssignment.cs
- MouseGesture.cs
- MultiDataTrigger.cs
- AdornerDecorator.cs
- RoutedUICommand.cs
- TabControl.cs
- CompiledRegexRunnerFactory.cs
- DispatcherObject.cs
- UpdatePanelControlTrigger.cs
- HttpHeaderCollection.cs
- GradientSpreadMethodValidation.cs
- COM2AboutBoxPropertyDescriptor.cs
- BinHexDecoder.cs
- DifferencingCollection.cs
- BCLDebug.cs
- PropertyMap.cs
- EmptyImpersonationContext.cs
- Pens.cs
- ObjectListDesigner.cs
- WriteTimeStream.cs
- AddressAlreadyInUseException.cs
- CalendarModeChangedEventArgs.cs
- EventRoute.cs
- ResizeGrip.cs
- NumberSubstitution.cs
- OperationDescription.cs
- DeadCharTextComposition.cs
- Token.cs
- HwndSourceKeyboardInputSite.cs
- ILGenerator.cs
- GPPOINTF.cs
- PortCache.cs
- WsatStrings.cs
- ListViewDeleteEventArgs.cs
- _UriTypeConverter.cs
- SlotInfo.cs
- Expressions.cs
- HealthMonitoringSection.cs
- XmlTextEncoder.cs
- DisposableCollectionWrapper.cs
- ContainerAction.cs
- HttpCacheVary.cs
- ToolBarPanel.cs
- JavaScriptObjectDeserializer.cs
- TimeIntervalCollection.cs
- EntityReference.cs
- DataGridCaption.cs
- Random.cs
- WindowsRebar.cs
- GridSplitterAutomationPeer.cs
- SubtreeProcessor.cs
- GridToolTip.cs
- EntityDataSourceDataSelectionPanel.cs
- TaskForm.cs
- DateTimeConverter2.cs
- RtfFormatStack.cs
- AnnotationDocumentPaginator.cs
- UpdateManifestForBrowserApplication.cs
- DrawingImage.cs
- Membership.cs
- PreviewPrintController.cs
- AttachedAnnotationChangedEventArgs.cs
- TextParagraph.cs
- Constraint.cs
- RenamedEventArgs.cs
- AppSettingsReader.cs
- JulianCalendar.cs
- TypeSystem.cs
- SimpleTypeResolver.cs
- AssociationSetMetadata.cs
- SortExpressionBuilder.cs
- TcpSocketManager.cs
- InstancePersistenceException.cs
- SchemaElementDecl.cs
- ProxyRpc.cs