Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CharConverter.cs
- DbDataReader.cs
- ServiceModelInstallComponent.cs
- sqlmetadatafactory.cs
- ReadOnlyDictionary.cs
- DataGridViewRowCollection.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- TextRangeEditLists.cs
- DataGridTextBoxColumn.cs
- HandlerElementCollection.cs
- BindingNavigator.cs
- SplineKeyFrames.cs
- MenuItemStyle.cs
- CodeNamespaceImport.cs
- _UriTypeConverter.cs
- MenuItemCollection.cs
- MergeFailedEvent.cs
- BitmapEffectGroup.cs
- Msec.cs
- BamlRecordWriter.cs
- Constraint.cs
- SqlTrackingWorkflowInstance.cs
- PersianCalendar.cs
- Error.cs
- ContextBase.cs
- PathSegmentCollection.cs
- ProcessRequestArgs.cs
- IgnoreFileBuildProvider.cs
- PropertyNames.cs
- RuleRefElement.cs
- HostedHttpContext.cs
- PresentationAppDomainManager.cs
- ToolboxItemSnapLineBehavior.cs
- DataGridViewComponentPropertyGridSite.cs
- ComponentTray.cs
- ExternalDataExchangeService.cs
- ToolboxItem.cs
- ValidationErrorCollection.cs
- CompressStream.cs
- TemplateBuilder.cs
- DataTableMappingCollection.cs
- ThaiBuddhistCalendar.cs
- BitmapCacheBrush.cs
- ClientRuntimeConfig.cs
- AutomationIdentifierGuids.cs
- BoolExpression.cs
- XPathPatternBuilder.cs
- XmlSchemaAttributeGroup.cs
- SubclassTypeValidatorAttribute.cs
- ColorConverter.cs
- DataListItemCollection.cs
- ScrollProperties.cs
- UnknownWrapper.cs
- HttpsTransportElement.cs
- XPathAncestorIterator.cs
- _UncName.cs
- RedirectionProxy.cs
- MethodImplAttribute.cs
- ControlBuilderAttribute.cs
- DBSqlParserColumn.cs
- WebFaultClientMessageInspector.cs
- ItemDragEvent.cs
- PersonalizableTypeEntry.cs
- ZipIORawDataFileBlock.cs
- StylusPointCollection.cs
- TypeInitializationException.cs
- ConcurrentStack.cs
- PageParser.cs
- Substitution.cs
- XmlNamespaceMappingCollection.cs
- RedBlackList.cs
- IDReferencePropertyAttribute.cs
- AccessKeyManager.cs
- NumericUpDownAccelerationCollection.cs
- ObjectStateEntryDbDataRecord.cs
- HttpRuntimeSection.cs
- UndirectedGraph.cs
- DesignerCategoryAttribute.cs
- DataReaderContainer.cs
- ExecutionEngineException.cs
- NativeRightsManagementAPIsStructures.cs
- TabControl.cs
- QuaternionAnimation.cs
- XmlSchemaGroupRef.cs
- BitmapEffectInput.cs
- CodeNamespace.cs
- ConstructorNeedsTagAttribute.cs
- CodeFieldReferenceExpression.cs
- MergeLocalizationDirectives.cs
- CompilerParameters.cs
- RenderData.cs
- TextTreeUndoUnit.cs
- CellCreator.cs
- SafeArrayTypeMismatchException.cs
- DoubleConverter.cs
- CellLabel.cs
- CapabilitiesAssignment.cs
- Membership.cs
- HttpProfileGroupBase.cs
- WebBrowserUriTypeConverter.cs