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
- HttpModuleActionCollection.cs
- AppDomain.cs
- RoutedEventArgs.cs
- GridViewRowEventArgs.cs
- XmlDocumentFragment.cs
- SByteStorage.cs
- ObjectDataSourceMethodEventArgs.cs
- GridViewColumnHeaderAutomationPeer.cs
- MoveSizeWinEventHandler.cs
- UniformGrid.cs
- PropertyInfo.cs
- TriState.cs
- VerificationAttribute.cs
- MemberExpression.cs
- StringFreezingAttribute.cs
- Ray3DHitTestResult.cs
- ObjectParameterCollection.cs
- ObjRef.cs
- SHA512Managed.cs
- XmlQueryRuntime.cs
- PageContentAsyncResult.cs
- AdPostCacheSubstitution.cs
- CodeDomSerializerBase.cs
- ActivitySurrogateSelector.cs
- DataGridCellsPanel.cs
- ImageSourceConverter.cs
- X509CertificateCollection.cs
- CultureMapper.cs
- CustomTypeDescriptor.cs
- ScriptMethodAttribute.cs
- DataKey.cs
- GreenMethods.cs
- SafeBitVector32.cs
- RenderCapability.cs
- ValidationError.cs
- WebPartDisplayModeEventArgs.cs
- LambdaCompiler.ControlFlow.cs
- CodeSubDirectory.cs
- RequestCachePolicy.cs
- StringPropertyBuilder.cs
- BitmapData.cs
- TagPrefixInfo.cs
- DataTableMapping.cs
- CodeSubDirectory.cs
- DynamicExpression.cs
- Decorator.cs
- MarkupExtensionParser.cs
- PaintValueEventArgs.cs
- EntityDescriptor.cs
- ComponentEditorPage.cs
- BeginStoryboard.cs
- TypeElementCollection.cs
- WindowsAuthenticationEventArgs.cs
- SmiTypedGetterSetter.cs
- QueryStack.cs
- XamlPathDataSerializer.cs
- TreeNodeConverter.cs
- StartUpEventArgs.cs
- TextFormatterImp.cs
- PropertyIDSet.cs
- TableAdapterManagerHelper.cs
- ExtensionWindowResizeGrip.cs
- DBParameter.cs
- ConnectionManagementSection.cs
- MenuItemBindingCollection.cs
- StorageFunctionMapping.cs
- DLinqColumnProvider.cs
- QuaternionAnimation.cs
- AssertSection.cs
- StandardCommandToolStripMenuItem.cs
- DebugView.cs
- XmlSchemaComplexContent.cs
- RegexCompilationInfo.cs
- WmlCalendarAdapter.cs
- ToolboxItem.cs
- OptionUsage.cs
- MsdtcWrapper.cs
- OdbcRowUpdatingEvent.cs
- DataGridItem.cs
- TreeView.cs
- XmlQuerySequence.cs
- Point.cs
- ListView.cs
- DomainUpDown.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- PageThemeCodeDomTreeGenerator.cs
- Triangle.cs
- Size3DConverter.cs
- CreateUserWizardStep.cs
- FileSystemEventArgs.cs
- dsa.cs
- LinearGradientBrush.cs
- LostFocusEventManager.cs
- TemplatePagerField.cs
- ToolStripEditorManager.cs
- SHA1.cs
- SecurityRuntime.cs
- _StreamFramer.cs
- SessionStateModule.cs
- NavigatorOutput.cs