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
- EventsTab.cs
- DaylightTime.cs
- WebPartConnectionsConfigureVerb.cs
- NodeFunctions.cs
- MappedMetaModel.cs
- Focus.cs
- CompModSwitches.cs
- DrawingGroup.cs
- TextElementEnumerator.cs
- odbcmetadatacolumnnames.cs
- PriorityChain.cs
- HwndMouseInputProvider.cs
- RotationValidation.cs
- Gdiplus.cs
- StatusBarAutomationPeer.cs
- IPCCacheManager.cs
- ContextBase.cs
- _SingleItemRequestCache.cs
- basenumberconverter.cs
- ClientBuildManagerCallback.cs
- GridViewRow.cs
- CellRelation.cs
- BinaryFormatterWriter.cs
- CatalogPartCollection.cs
- WindowPatternIdentifiers.cs
- IntranetCredentialPolicy.cs
- ComponentEditorPage.cs
- XPathChildIterator.cs
- DataGridTextBoxColumn.cs
- RangeBaseAutomationPeer.cs
- ScrollProperties.cs
- SystemDiagnosticsSection.cs
- DecimalAnimationBase.cs
- ExceptionUtil.cs
- DataFormat.cs
- ImageMetadata.cs
- Point3D.cs
- TreeViewImageKeyConverter.cs
- SamlSubject.cs
- TypedTableGenerator.cs
- ConfigurationPropertyAttribute.cs
- ChannelPoolSettings.cs
- ConnectionConsumerAttribute.cs
- DoubleLinkListEnumerator.cs
- Win32Native.cs
- GatewayDefinition.cs
- ProfileParameter.cs
- Decoder.cs
- StackSpiller.Bindings.cs
- ParameterModifier.cs
- InvalidDataException.cs
- TypeBuilder.cs
- EntityClientCacheEntry.cs
- FormsAuthenticationUserCollection.cs
- ConditionCollection.cs
- EntryWrittenEventArgs.cs
- _DisconnectOverlappedAsyncResult.cs
- Soap12ProtocolImporter.cs
- FixedTextBuilder.cs
- BamlRecordReader.cs
- StreamReader.cs
- HScrollBar.cs
- AspProxy.cs
- BaseTemplateBuildProvider.cs
- CompleteWizardStep.cs
- ProfileParameter.cs
- PrePostDescendentsWalker.cs
- HitTestFilterBehavior.cs
- Condition.cs
- HostedBindingBehavior.cs
- HtmlToClrEventProxy.cs
- BuildDependencySet.cs
- ProxyManager.cs
- NativeRightsManagementAPIsStructures.cs
- AssociationTypeEmitter.cs
- OutputScopeManager.cs
- SmtpCommands.cs
- ObsoleteAttribute.cs
- XmlWriterDelegator.cs
- FixedTextContainer.cs
- WebPartEditorOkVerb.cs
- ExpandableObjectConverter.cs
- SchemaImporterExtensionsSection.cs
- ProfileProvider.cs
- Signature.cs
- HtmlLink.cs
- FontSource.cs
- DocumentOrderQuery.cs
- ManipulationStartingEventArgs.cs
- CryptoHandle.cs
- TraceSection.cs
- SectionVisual.cs
- PagerSettings.cs
- MessageFormatterConverter.cs
- TextCharacters.cs
- EntityProviderServices.cs
- Setter.cs
- AsnEncodedData.cs
- ComboBox.cs
- PrePostDescendentsWalker.cs