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
- SharedPersonalizationStateInfo.cs
- ReferentialConstraint.cs
- DataTableMapping.cs
- AppDomain.cs
- ListViewItemEventArgs.cs
- XmlSchemaNotation.cs
- PositiveTimeSpanValidator.cs
- DataGridViewButtonColumn.cs
- DynamicRendererThreadManager.cs
- NativeMethodsCLR.cs
- ZipIORawDataFileBlock.cs
- DefaultWorkflowLoaderService.cs
- DisplayInformation.cs
- PiiTraceSource.cs
- ToolConsole.cs
- LinqDataSourceHelper.cs
- PeerContact.cs
- PointAnimationBase.cs
- WmpBitmapEncoder.cs
- AssemblyInfo.cs
- TraceLog.cs
- Parser.cs
- AttachInfo.cs
- DataViewManagerListItemTypeDescriptor.cs
- SByte.cs
- CodeDirectoryCompiler.cs
- ToolStripItemImageRenderEventArgs.cs
- CellTreeNodeVisitors.cs
- MenuItemCollection.cs
- HtmlInputPassword.cs
- RecognizerInfo.cs
- MimeReflector.cs
- AVElementHelper.cs
- SecurityTokenResolver.cs
- ListViewEditEventArgs.cs
- DataBindingCollection.cs
- CodeAttributeArgument.cs
- XmlDocumentFragment.cs
- EnumerationRangeValidationUtil.cs
- FunctionQuery.cs
- PowerStatus.cs
- QueryableFilterRepeater.cs
- Viewport3DVisual.cs
- PrivilegedConfigurationManager.cs
- FileUpload.cs
- brushes.cs
- GeneralTransform.cs
- MenuAdapter.cs
- GetRecipientListRequest.cs
- WebBrowserNavigatingEventHandler.cs
- InstanceStore.cs
- DataGridViewCellStyleConverter.cs
- securitycriticaldataformultiplegetandset.cs
- ToolStripSeparatorRenderEventArgs.cs
- SystemInfo.cs
- AssemblyFilter.cs
- LoadGrammarCompletedEventArgs.cs
- XmlNamespaceManager.cs
- HttpWebRequestElement.cs
- PathSegment.cs
- ClientUtils.cs
- EventPropertyMap.cs
- ScrollChrome.cs
- XPathException.cs
- Subset.cs
- SimpleTextLine.cs
- RoleManagerModule.cs
- BlobPersonalizationState.cs
- IListConverters.cs
- SemaphoreFullException.cs
- BulletedListEventArgs.cs
- PartitionResolver.cs
- XmlResolver.cs
- SafeReadContext.cs
- DispatcherHookEventArgs.cs
- MergeLocalizationDirectives.cs
- MappingModelBuildProvider.cs
- mediaeventargs.cs
- PropertyCondition.cs
- BinaryNode.cs
- ValueQuery.cs
- XmlSchemaAttributeGroup.cs
- SqlCommandSet.cs
- TcpConnectionPoolSettingsElement.cs
- TaskHelper.cs
- EntityContainerAssociationSet.cs
- DataGridRowDetailsEventArgs.cs
- AssemblySettingAttributes.cs
- MediaCommands.cs
- baseaxisquery.cs
- PipelineModuleStepContainer.cs
- DeleteMemberBinder.cs
- HttpCookiesSection.cs
- GridEntryCollection.cs
- XmlDomTextWriter.cs
- Queue.cs
- SafeSecurityHandles.cs
- SafeViewOfFileHandle.cs
- ImageSource.cs
- UrlMappingsSection.cs