Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // //// 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
- RepeaterDataBoundAdapter.cs
- HttpRuntime.cs
- TextTreeText.cs
- DataGridViewCellValidatingEventArgs.cs
- ActivityCodeDomReferenceService.cs
- ProcessHost.cs
- UDPClient.cs
- DataError.cs
- DefaultPrintController.cs
- SessionStateItemCollection.cs
- Models.cs
- DbParameterCollection.cs
- UnauthorizedWebPart.cs
- TimeoutException.cs
- GenericIdentity.cs
- HtmlControlPersistable.cs
- OneOfConst.cs
- EmptyEnumerator.cs
- XmlSchemaInfo.cs
- VirtualPathProvider.cs
- ReadOnlyTernaryTree.cs
- InputProcessorProfilesLoader.cs
- DataGridViewTopRowAccessibleObject.cs
- PageCatalogPart.cs
- _StreamFramer.cs
- dtdvalidator.cs
- ClosureBinding.cs
- PersonalizableAttribute.cs
- RegexWorker.cs
- StackSpiller.cs
- DrawingContextWalker.cs
- WebBrowserUriTypeConverter.cs
- Function.cs
- WebPartDisplayModeCollection.cs
- SafeNativeMethods.cs
- SqlStream.cs
- EntityTemplateUserControl.cs
- DataGridColumnCollection.cs
- XmlSchemaSimpleContent.cs
- TrackingProfileDeserializationException.cs
- CustomCredentialPolicy.cs
- XmlWhitespace.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- TransformCryptoHandle.cs
- ApplicationProxyInternal.cs
- _ProxyRegBlob.cs
- SelectionItemProviderWrapper.cs
- LabelEditEvent.cs
- ParserHooks.cs
- TemplateBindingExtensionConverter.cs
- HwndProxyElementProvider.cs
- PeerInvitationResponse.cs
- Region.cs
- DesignerVerbCollection.cs
- UnionQueryOperator.cs
- DataGridViewToolTip.cs
- TreeWalker.cs
- ValueType.cs
- basemetadatamappingvisitor.cs
- IImplicitResourceProvider.cs
- XmlIlTypeHelper.cs
- AdornerDecorator.cs
- XslException.cs
- DataGridItemCollection.cs
- SizeAnimationUsingKeyFrames.cs
- ApplicationCommands.cs
- BuiltInExpr.cs
- Pkcs7Recipient.cs
- ForceCopyBuildProvider.cs
- XPathPatternBuilder.cs
- ContentType.cs
- ProtocolsConfigurationEntry.cs
- Visual3D.cs
- ParallelEnumerableWrapper.cs
- FacetDescription.cs
- MetadataCollection.cs
- EnumType.cs
- CounterSample.cs
- XPathEmptyIterator.cs
- TimeSpanStorage.cs
- ObjectDesignerDataSourceView.cs
- PropertyAccessVisitor.cs
- ResourceReferenceExpression.cs
- ByteBufferPool.cs
- MemberPathMap.cs
- ComContractElement.cs
- UxThemeWrapper.cs
- RSAPKCS1SignatureDeformatter.cs
- FixedTextSelectionProcessor.cs
- WsdlBuildProvider.cs
- DataControlFieldCollection.cs
- CatalogZone.cs
- _Connection.cs
- PolicyLevel.cs
- CodeSnippetStatement.cs
- FtpRequestCacheValidator.cs
- _LazyAsyncResult.cs
- PocoPropertyAccessorStrategy.cs
- SiteMap.cs
- Msmq4PoisonHandler.cs