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
- TextSpanModifier.cs
- ADRoleFactory.cs
- FixedSOMElement.cs
- ConstraintStruct.cs
- TaiwanLunisolarCalendar.cs
- OleDbParameterCollection.cs
- DocumentPageView.cs
- ProtocolsSection.cs
- Deserializer.cs
- SqlNodeAnnotations.cs
- FilteredDataSetHelper.cs
- CodeTypeOfExpression.cs
- assemblycache.cs
- DataGridTable.cs
- PageCatalogPart.cs
- ResolveCriteriaApril2005.cs
- DocumentPage.cs
- CanExpandCollapseAllConverter.cs
- ClaimComparer.cs
- WindowsListViewItemCheckBox.cs
- QueryRelOp.cs
- ImmutableObjectAttribute.cs
- PersistenceTypeAttribute.cs
- TemplateKey.cs
- PerfCounterSection.cs
- Tokenizer.cs
- UniqueEventHelper.cs
- TraceSection.cs
- UserNamePasswordValidator.cs
- PipeStream.cs
- Container.cs
- ObjectDataSource.cs
- DataGridItemCollection.cs
- PerformanceCounterNameAttribute.cs
- GridProviderWrapper.cs
- FakeModelPropertyImpl.cs
- PowerModeChangedEventArgs.cs
- RuntimeHelpers.cs
- BaseTreeIterator.cs
- IsolatedStorageFileStream.cs
- InvalidComObjectException.cs
- PingOptions.cs
- SecurityKeyIdentifier.cs
- CssStyleCollection.cs
- AutomationPeer.cs
- UIServiceHelper.cs
- CngAlgorithm.cs
- CodeEntryPointMethod.cs
- SchemaMapping.cs
- TextBox.cs
- TypeNameConverter.cs
- SortableBindingList.cs
- PathFigureCollection.cs
- FirstQueryOperator.cs
- SQLMembershipProvider.cs
- AutoCompleteStringCollection.cs
- mactripleDES.cs
- DetailsViewModeEventArgs.cs
- SourceChangedEventArgs.cs
- TabletDevice.cs
- GeneralTransform2DTo3D.cs
- PanelContainerDesigner.cs
- ValueOfAction.cs
- VBCodeProvider.cs
- OleDbCommandBuilder.cs
- WebPartMenu.cs
- KeyNotFoundException.cs
- HostingEnvironmentSection.cs
- DetailsViewInsertedEventArgs.cs
- BitmapEffectInputData.cs
- ApplicationManager.cs
- SmtpReplyReaderFactory.cs
- ProviderCollection.cs
- ManipulationVelocities.cs
- DiagnosticTrace.cs
- Transform3DGroup.cs
- WebBrowserHelper.cs
- DataFormats.cs
- ListBoxItemWrapperAutomationPeer.cs
- PipelineModuleStepContainer.cs
- WinInet.cs
- OdbcPermission.cs
- Model3D.cs
- MetadataSerializer.cs
- WsatTransactionInfo.cs
- MenuAutoFormat.cs
- MetadataCache.cs
- ReplacementText.cs
- Hashtable.cs
- ProviderUtil.cs
- SubMenuStyleCollection.cs
- DataRecordInternal.cs
- KeyToListMap.cs
- ToolStripCollectionEditor.cs
- ActivityValidationServices.cs
- ProviderConnectionPointCollection.cs
- PageTextBox.cs
- ComponentDispatcher.cs
- DataServiceContext.cs
- XmlTextWriter.cs