Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Markup / StaticExtension.cs / 1305600 / StaticExtension.cs
/****************************************************************************\ * * File: StaticExtension.cs * * Class for Xaml markup extension for static field and property references. * * Copyright (C) 2004 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Windows.Input; using System.Reflection; using MS.Internal.WindowsBase; using MS.Utility; using System.Runtime.CompilerServices; using System.Windows.Markup; using System.Windows; namespace MS.Internal.Markup { ////// WPF wrapper for StaticExtension. Optimizes some common SystemResourceKeys & Commands /// internal class StaticExtension : System.Windows.Markup.StaticExtension { public StaticExtension() : base() { } public StaticExtension(String member) : base(member) { } ////// Return an object that should be set on the targetObject's targetProperty /// for this markup extension. For a StaticExtension this is a static field /// or property value. /// /// Object that can provide services for the markup extension. ////// The object to set on this property. /// public override object ProvideValue(IServiceProvider serviceProvider) { if (Member == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionStaticMember)); } object value; if (MemberType != null) { value = SystemResourceKey.GetSystemResourceKey(MemberType.Name + "." + Member); if (value != null) { return value; } } else { value = SystemResourceKey.GetSystemResourceKey(Member); if (value != null) { return value; } // Validate the _member int dotIndex = Member.IndexOf('.'); if (dotIndex < 0) { throw new ArgumentException(SR.Get(SRID.MarkupExtensionBadStatic, Member)); } // Pull out the type substring (this will include any XML prefix, e.g. "av:Button") string typeString = Member.Substring(0, dotIndex); if (typeString == string.Empty) { throw new ArgumentException(SR.Get(SRID.MarkupExtensionBadStatic, Member)); } // Get the IXamlTypeResolver from the service provider if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } IXamlTypeResolver xamlTypeResolver = serviceProvider.GetService(typeof(IXamlTypeResolver)) as IXamlTypeResolver; if (xamlTypeResolver == null) { throw new ArgumentException(SR.Get(SRID.MarkupExtensionNoContext, GetType().Name, "IXamlTypeResolver")); } // Use the type resolver to get a Type instance MemberType = xamlTypeResolver.Resolve(typeString); // Get the member name substring Member = Member.Substring(dotIndex + 1, Member.Length - dotIndex - 1); } value = CommandConverter.GetKnownControlCommand(MemberType, Member); if (value != null) { return value; } return base.ProvideValue(serviceProvider); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /****************************************************************************\ * * File: StaticExtension.cs * * Class for Xaml markup extension for static field and property references. * * Copyright (C) 2004 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Windows.Input; using System.Reflection; using MS.Internal.WindowsBase; using MS.Utility; using System.Runtime.CompilerServices; using System.Windows.Markup; using System.Windows; namespace MS.Internal.Markup { ////// WPF wrapper for StaticExtension. Optimizes some common SystemResourceKeys & Commands /// internal class StaticExtension : System.Windows.Markup.StaticExtension { public StaticExtension() : base() { } public StaticExtension(String member) : base(member) { } ////// Return an object that should be set on the targetObject's targetProperty /// for this markup extension. For a StaticExtension this is a static field /// or property value. /// /// Object that can provide services for the markup extension. ////// The object to set on this property. /// public override object ProvideValue(IServiceProvider serviceProvider) { if (Member == null) { throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionStaticMember)); } object value; if (MemberType != null) { value = SystemResourceKey.GetSystemResourceKey(MemberType.Name + "." + Member); if (value != null) { return value; } } else { value = SystemResourceKey.GetSystemResourceKey(Member); if (value != null) { return value; } // Validate the _member int dotIndex = Member.IndexOf('.'); if (dotIndex < 0) { throw new ArgumentException(SR.Get(SRID.MarkupExtensionBadStatic, Member)); } // Pull out the type substring (this will include any XML prefix, e.g. "av:Button") string typeString = Member.Substring(0, dotIndex); if (typeString == string.Empty) { throw new ArgumentException(SR.Get(SRID.MarkupExtensionBadStatic, Member)); } // Get the IXamlTypeResolver from the service provider if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } IXamlTypeResolver xamlTypeResolver = serviceProvider.GetService(typeof(IXamlTypeResolver)) as IXamlTypeResolver; if (xamlTypeResolver == null) { throw new ArgumentException(SR.Get(SRID.MarkupExtensionNoContext, GetType().Name, "IXamlTypeResolver")); } // Use the type resolver to get a Type instance MemberType = xamlTypeResolver.Resolve(typeString); // Get the member name substring Member = Member.Substring(dotIndex + 1, Member.Length - dotIndex - 1); } value = CommandConverter.GetKnownControlCommand(MemberType, Member); if (value != null) { return value; } return base.ProvideValue(serviceProvider); } } } // 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
- RemotingConfiguration.cs
- WsdlBuildProvider.cs
- LabelDesigner.cs
- PolicyVersion.cs
- Input.cs
- BooleanFunctions.cs
- AsyncContentLoadedEventArgs.cs
- UTF8Encoding.cs
- PointAnimationClockResource.cs
- ResourcePart.cs
- DataBoundControlActionList.cs
- DataGridViewColumnTypeEditor.cs
- ListItemCollection.cs
- WebHttpSecurityModeHelper.cs
- ChtmlLinkAdapter.cs
- PeerMaintainer.cs
- SecurityRuntime.cs
- StaticDataManager.cs
- TextFragmentEngine.cs
- StandardTransformFactory.cs
- XmlObjectSerializer.cs
- SequenceDesignerAccessibleObject.cs
- SqlBulkCopy.cs
- BehaviorDragDropEventArgs.cs
- DelayedRegex.cs
- DesignerAdapterUtil.cs
- EntitySetBase.cs
- ModelVisual3D.cs
- SqlBuilder.cs
- TextDecoration.cs
- HttpWebResponse.cs
- XmlQueryStaticData.cs
- AsyncPostBackTrigger.cs
- XmlSchemaGroupRef.cs
- wgx_sdk_version.cs
- ColorMap.cs
- Timer.cs
- ToolStripItemImageRenderEventArgs.cs
- FormViewModeEventArgs.cs
- MD5HashHelper.cs
- IdentifierService.cs
- PersonalizationDictionary.cs
- Sentence.cs
- FormViewDeleteEventArgs.cs
- SecurityElement.cs
- ApplicationTrust.cs
- DbgUtil.cs
- OleDbPermission.cs
- GridViewHeaderRowPresenter.cs
- WebConfigurationHostFileChange.cs
- ProxyElement.cs
- PathFigure.cs
- ObjectPersistData.cs
- ExchangeUtilities.cs
- SequenceFullException.cs
- SqlNamer.cs
- LogEntryHeaderv1Deserializer.cs
- GridViewColumn.cs
- GAC.cs
- PolicyException.cs
- ImpersonationContext.cs
- ColumnMap.cs
- RectangleHotSpot.cs
- ThreadExceptionDialog.cs
- QueryExtender.cs
- ListControlConvertEventArgs.cs
- ConstrainedDataObject.cs
- ThaiBuddhistCalendar.cs
- PasswordPropertyTextAttribute.cs
- TransformerConfigurationWizardBase.cs
- Deserializer.cs
- RestHandlerFactory.cs
- TypeUnloadedException.cs
- CollectionBuilder.cs
- FixedPosition.cs
- NamedPipeProcessProtocolHandler.cs
- PrintDialogDesigner.cs
- TemplateEditingService.cs
- CommandDevice.cs
- ManifestSignedXml.cs
- IndentTextWriter.cs
- unsafenativemethodstextservices.cs
- HttpResponse.cs
- ProtocolImporter.cs
- FrameworkReadOnlyPropertyMetadata.cs
- SmtpClient.cs
- MethodAccessException.cs
- XmlEnumAttribute.cs
- VerticalConnector.xaml.cs
- SqlTypeSystemProvider.cs
- XmlSerializationWriter.cs
- NotImplementedException.cs
- TransactionBridgeSection.cs
- RSAPKCS1SignatureFormatter.cs
- DataGridTextBox.cs
- Composition.cs
- FastPropertyAccessor.cs
- FrameworkElementFactory.cs
- BindUriHelper.cs
- PingOptions.cs