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
- BlurEffect.cs
- PasswordTextNavigator.cs
- PagesChangedEventArgs.cs
- AttachedPropertyInfo.cs
- IndexerReference.cs
- BuildProviderAppliesToAttribute.cs
- CodeNamespaceCollection.cs
- SemanticResultValue.cs
- EditorPartDesigner.cs
- WebPartZoneCollection.cs
- TreeNodeStyleCollectionEditor.cs
- FontDifferentiator.cs
- ColorConverter.cs
- InputMethodStateChangeEventArgs.cs
- DetailsView.cs
- ToolboxComponentsCreatingEventArgs.cs
- PasswordDeriveBytes.cs
- SeekStoryboard.cs
- SystemMulticastIPAddressInformation.cs
- ImportCatalogPart.cs
- RuleAction.cs
- PropertyDescriptor.cs
- Propagator.Evaluator.cs
- Error.cs
- Label.cs
- AsyncOperationManager.cs
- RemotingException.cs
- FunctionMappingTranslator.cs
- KeyboardDevice.cs
- SortableBindingList.cs
- EnumUnknown.cs
- storepermissionattribute.cs
- SingleConverter.cs
- RadioButton.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- TypedServiceChannelBuilder.cs
- HashMembershipCondition.cs
- WebBrowser.cs
- GenericNameHandler.cs
- Pair.cs
- DataServices.cs
- Application.cs
- CodeAccessSecurityEngine.cs
- Models.cs
- MatrixKeyFrameCollection.cs
- EllipseGeometry.cs
- StylusPointProperties.cs
- ScrollChangedEventArgs.cs
- DataTrigger.cs
- ConditionalAttribute.cs
- TextEditorLists.cs
- EditCommandColumn.cs
- CommandID.cs
- HTTPNotFoundHandler.cs
- DataObjectSettingDataEventArgs.cs
- ProvidersHelper.cs
- NumberFormatter.cs
- TextEditorTyping.cs
- EventTrigger.cs
- WebBrowserNavigatingEventHandler.cs
- PaintEvent.cs
- ConfigurationStrings.cs
- ObjectItemCachedAssemblyLoader.cs
- Animatable.cs
- MergeFailedEvent.cs
- CustomValidator.cs
- SafeTimerHandle.cs
- ZipIOLocalFileDataDescriptor.cs
- ListViewTableCell.cs
- StringExpressionSet.cs
- DEREncoding.cs
- EventToken.cs
- HandleExceptionArgs.cs
- XamlClipboardData.cs
- IIS7WorkerRequest.cs
- HandlerFactoryCache.cs
- basecomparevalidator.cs
- MultipartIdentifier.cs
- ListItemCollection.cs
- UTF32Encoding.cs
- WindowsEditBoxRange.cs
- NotImplementedException.cs
- ColumnBinding.cs
- RegexCapture.cs
- HostProtectionException.cs
- CallInfo.cs
- TrackingMemoryStreamFactory.cs
- CompiledQueryCacheKey.cs
- CacheDependency.cs
- BamlRecords.cs
- ViewManager.cs
- SqlNotificationRequest.cs
- StoragePropertyMapping.cs
- RtfNavigator.cs
- NavigationEventArgs.cs
- ADMembershipProvider.cs
- BrowserCapabilitiesCodeGenerator.cs
- DataPointer.cs
- DeflateEmulationStream.cs
- PenThreadPool.cs