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
- TaiwanCalendar.cs
- FrameworkReadOnlyPropertyMetadata.cs
- WebConfigurationFileMap.cs
- DataListItemCollection.cs
- SelectorItemAutomationPeer.cs
- RegexParser.cs
- ExtensionWindowHeader.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- AppDomainManager.cs
- OverflowException.cs
- DetailsViewPagerRow.cs
- SafeCryptoHandles.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- ConfigurationException.cs
- InputLanguageManager.cs
- InfoCardTrace.cs
- FillRuleValidation.cs
- ListSortDescription.cs
- mongolianshape.cs
- DivideByZeroException.cs
- XPathConvert.cs
- _NetworkingPerfCounters.cs
- LambdaCompiler.Logical.cs
- CopyEncoder.cs
- ToolStripStatusLabel.cs
- WindowCollection.cs
- AsymmetricAlgorithm.cs
- HitTestWithGeometryDrawingContextWalker.cs
- PermissionSet.cs
- UInt64.cs
- CompilerInfo.cs
- cookiecollection.cs
- RelationshipType.cs
- SafeSecurityHandles.cs
- EllipticalNodeOperations.cs
- ListControl.cs
- MatrixTransform.cs
- HttpApplication.cs
- ToolStripRenderer.cs
- mactripleDES.cs
- RequestCachePolicy.cs
- QilPatternFactory.cs
- EventMappingSettings.cs
- SkewTransform.cs
- DocumentEventArgs.cs
- CustomSignedXml.cs
- SimpleNameService.cs
- OutputCacheProviderCollection.cs
- DataKeyCollection.cs
- SafeWaitHandle.cs
- DataGridViewColumnEventArgs.cs
- SortFieldComparer.cs
- ConfigXmlElement.cs
- SQLStringStorage.cs
- TextMarkerSource.cs
- NullableDoubleMinMaxAggregationOperator.cs
- CounterSample.cs
- OleDbSchemaGuid.cs
- GetPageNumberCompletedEventArgs.cs
- BaseTemplateParser.cs
- EventLogEntry.cs
- ToolStripRenderEventArgs.cs
- SerTrace.cs
- MetaTableHelper.cs
- MultiPartWriter.cs
- SimpleMailWebEventProvider.cs
- Journaling.cs
- CompModSwitches.cs
- SpeechSeg.cs
- DataBindingHandlerAttribute.cs
- ObjectAssociationEndMapping.cs
- ReadonlyMessageFilter.cs
- WebBrowserBase.cs
- GridEntry.cs
- QuestionEventArgs.cs
- XXXInfos.cs
- DispatchWrapper.cs
- ColorIndependentAnimationStorage.cs
- DataBindingCollection.cs
- indexingfiltermarshaler.cs
- ServicePointManagerElement.cs
- EmptyImpersonationContext.cs
- StringBlob.cs
- RubberbandSelector.cs
- SiteMapNode.cs
- OracleCommand.cs
- EntityTypeEmitter.cs
- DictionarySectionHandler.cs
- ConfigurationSettings.cs
- WorkflowServiceHostFactory.cs
- UIElement.cs
- RowToParametersTransformer.cs
- DataGridState.cs
- BaseCodeDomTreeGenerator.cs
- XPathExpr.cs
- GuidTagList.cs
- Exceptions.cs
- CheckBoxPopupAdapter.cs
- DataControlFieldCell.cs
- ParameterBuilder.cs