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
- IsolatedStorage.cs
- TimeSpanStorage.cs
- FilteredDataSetHelper.cs
- TextServicesPropertyRanges.cs
- AsyncOperationContext.cs
- RowToParametersTransformer.cs
- EncryptedKey.cs
- DateTimeSerializationSection.cs
- SoapObjectReader.cs
- DebugView.cs
- XPathAncestorIterator.cs
- RegularExpressionValidator.cs
- DefaultIfEmptyQueryOperator.cs
- TypeDescriptionProvider.cs
- CodeDirectiveCollection.cs
- SequentialUshortCollection.cs
- UpdatePanel.cs
- DateTimeOffset.cs
- SettingsAttributeDictionary.cs
- SchemaInfo.cs
- MergeLocalizationDirectives.cs
- FileVersion.cs
- UrlMappingsSection.cs
- LinkButton.cs
- LowerCaseStringConverter.cs
- CheckBoxField.cs
- ValidationRuleCollection.cs
- ItemsControlAutomationPeer.cs
- FrameworkElementAutomationPeer.cs
- TraceSwitch.cs
- SqlRowUpdatingEvent.cs
- MemberDescriptor.cs
- TimeoutTimer.cs
- RectAnimationUsingKeyFrames.cs
- AsyncResult.cs
- BigInt.cs
- ExceptionUtil.cs
- OleDbPropertySetGuid.cs
- TextTreeInsertUndoUnit.cs
- StringToken.cs
- XamlPathDataSerializer.cs
- XamlTypeMapper.cs
- InfoCardServiceInstallComponent.cs
- EventItfInfo.cs
- SecurityElement.cs
- ClientTargetCollection.cs
- sqlinternaltransaction.cs
- PersonalizationStateInfoCollection.cs
- X509AsymmetricSecurityKey.cs
- InternalBufferOverflowException.cs
- NotifyCollectionChangedEventArgs.cs
- ConstNode.cs
- ScriptControlManager.cs
- RadioButtonFlatAdapter.cs
- Matrix.cs
- XmlQueryTypeFactory.cs
- AlphabeticalEnumConverter.cs
- CollectionViewProxy.cs
- RuleSetDialog.cs
- WindowsListViewItemCheckBox.cs
- ScriptControlDescriptor.cs
- WebPartsSection.cs
- ActivityXRefPropertyEditor.cs
- BooleanFunctions.cs
- StringBuilder.cs
- AutoGeneratedFieldProperties.cs
- ServiceOperationInvoker.cs
- parserscommon.cs
- ReliableOutputConnection.cs
- TrustLevelCollection.cs
- EditorPartChrome.cs
- MembershipUser.cs
- KeyValueSerializer.cs
- PresentationSource.cs
- RegistryKey.cs
- TraceData.cs
- MenuBase.cs
- PartialToken.cs
- Object.cs
- TextPattern.cs
- BaseProcessProtocolHandler.cs
- XmlAttributeOverrides.cs
- ValueChangedEventManager.cs
- QueryAccessibilityHelpEvent.cs
- XsltLoader.cs
- RijndaelCryptoServiceProvider.cs
- KeyToListMap.cs
- _IPv6Address.cs
- EdmItemCollection.OcAssemblyCache.cs
- SectionRecord.cs
- XmlSchemaFacet.cs
- SkinBuilder.cs
- XmlWrappingReader.cs
- Dispatcher.cs
- SqlFunctions.cs
- ActivityExecutorDelegateInfo.cs
- ColumnMapCopier.cs
- _ProxyChain.cs
- SpeakInfo.cs
- DivideByZeroException.cs