Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Media / Animation / ControllableStoryboardAction.cs / 1 / ControllableStoryboardAction.cs
/****************************************************************************\
*
* File: ControllableStoryboardAction.cs
*
* This object includes a named Storyboard references. When triggered, the
* name is resolved and passed to a derived class method to perform the
* actual action.
*
* Copyright (C) by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System.ComponentModel; // DefaultValueAttribute
using System.Diagnostics; // Debug.Assert
using System.Windows.Documents; // TableTemplate
using System.Windows.Markup; // INameScope
namespace System.Windows.Media.Animation
{
///
/// A controllable storyboard action associates a trigger action with a
/// Storyboard. The association from this object is a string that is the name
/// of the Storyboard in a resource dictionary.
///
public abstract class ControllableStoryboardAction : TriggerAction
{
///
/// Internal constructor - nobody is supposed to ever create an instance
/// of this class. Use a derived class instead.
///
internal ControllableStoryboardAction()
{
}
///
/// Name to use for resolving the storyboard reference needed. This
/// points to a BeginStoryboard instance, and we're controlling that one.
///
[DefaultValue(null)]
public string BeginStoryboardName
{
get
{
return _beginStoryboardName;
}
set
{
if (IsSealed)
{
throw new InvalidOperationException(SR.Get(SRID.CannotChangeAfterSealed, "ControllableStoryboardAction"));
}
// Null is allowed to wipe out existing name - as long as another
// valid name is set before Invoke time.
_beginStoryboardName = value;
}
}
internal sealed override void Invoke( FrameworkElement fe, FrameworkContentElement fce, Style targetStyle, FrameworkTemplate frameworkTemplate, Int64 layer )
{
Debug.Assert( fe != null || fce != null, "Caller of internal function failed to verify that we have a FE or FCE - we have neither." );
Debug.Assert( targetStyle != null || frameworkTemplate != null,
"This function expects to be called when the associated action is inside a Style/Template. But it was not given a reference to anything." );
INameScope nameScope = null;
if( targetStyle != null )
{
nameScope = targetStyle;
}
else
{
Debug.Assert( frameworkTemplate != null );
nameScope = frameworkTemplate;
}
Invoke( fe, fce, GetStoryboard( fe, fce, nameScope ) );
}
internal sealed override void Invoke( FrameworkElement fe )
{
Debug.Assert( fe != null, "Invoke needs an object as starting point");
Invoke( fe, null, GetStoryboard( fe, null, null ) );
}
internal virtual void Invoke( FrameworkElement containingFE, FrameworkContentElement containingFCE, Storyboard storyboard )
{
}
// Find a Storyboard object for this StoryboardAction to act on, using the
// given BeginStoryboardName to find a BeginStoryboard instance and use
// its Storyboard object reference.
private Storyboard GetStoryboard( FrameworkElement fe, FrameworkContentElement fce, INameScope nameScope )
{
if( BeginStoryboardName == null )
{
throw new InvalidOperationException(SR.Get(SRID.Storyboard_BeginStoryboardNameRequired));
}
BeginStoryboard keyedBeginStoryboard = Storyboard.ResolveBeginStoryboardName( BeginStoryboardName, nameScope, fe, fce );
Storyboard storyboard = keyedBeginStoryboard.Storyboard;
if( storyboard == null )
{
throw new InvalidOperationException(SR.Get(SRID.Storyboard_BeginStoryboardNoStoryboard, BeginStoryboardName));
}
return storyboard;
}
private string _beginStoryboardName = null;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\
*
* File: ControllableStoryboardAction.cs
*
* This object includes a named Storyboard references. When triggered, the
* name is resolved and passed to a derived class method to perform the
* actual action.
*
* Copyright (C) by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System.ComponentModel; // DefaultValueAttribute
using System.Diagnostics; // Debug.Assert
using System.Windows.Documents; // TableTemplate
using System.Windows.Markup; // INameScope
namespace System.Windows.Media.Animation
{
///
/// A controllable storyboard action associates a trigger action with a
/// Storyboard. The association from this object is a string that is the name
/// of the Storyboard in a resource dictionary.
///
public abstract class ControllableStoryboardAction : TriggerAction
{
///
/// Internal constructor - nobody is supposed to ever create an instance
/// of this class. Use a derived class instead.
///
internal ControllableStoryboardAction()
{
}
///
/// Name to use for resolving the storyboard reference needed. This
/// points to a BeginStoryboard instance, and we're controlling that one.
///
[DefaultValue(null)]
public string BeginStoryboardName
{
get
{
return _beginStoryboardName;
}
set
{
if (IsSealed)
{
throw new InvalidOperationException(SR.Get(SRID.CannotChangeAfterSealed, "ControllableStoryboardAction"));
}
// Null is allowed to wipe out existing name - as long as another
// valid name is set before Invoke time.
_beginStoryboardName = value;
}
}
internal sealed override void Invoke( FrameworkElement fe, FrameworkContentElement fce, Style targetStyle, FrameworkTemplate frameworkTemplate, Int64 layer )
{
Debug.Assert( fe != null || fce != null, "Caller of internal function failed to verify that we have a FE or FCE - we have neither." );
Debug.Assert( targetStyle != null || frameworkTemplate != null,
"This function expects to be called when the associated action is inside a Style/Template. But it was not given a reference to anything." );
INameScope nameScope = null;
if( targetStyle != null )
{
nameScope = targetStyle;
}
else
{
Debug.Assert( frameworkTemplate != null );
nameScope = frameworkTemplate;
}
Invoke( fe, fce, GetStoryboard( fe, fce, nameScope ) );
}
internal sealed override void Invoke( FrameworkElement fe )
{
Debug.Assert( fe != null, "Invoke needs an object as starting point");
Invoke( fe, null, GetStoryboard( fe, null, null ) );
}
internal virtual void Invoke( FrameworkElement containingFE, FrameworkContentElement containingFCE, Storyboard storyboard )
{
}
// Find a Storyboard object for this StoryboardAction to act on, using the
// given BeginStoryboardName to find a BeginStoryboard instance and use
// its Storyboard object reference.
private Storyboard GetStoryboard( FrameworkElement fe, FrameworkContentElement fce, INameScope nameScope )
{
if( BeginStoryboardName == null )
{
throw new InvalidOperationException(SR.Get(SRID.Storyboard_BeginStoryboardNameRequired));
}
BeginStoryboard keyedBeginStoryboard = Storyboard.ResolveBeginStoryboardName( BeginStoryboardName, nameScope, fe, fce );
Storyboard storyboard = keyedBeginStoryboard.Storyboard;
if( storyboard == null )
{
throw new InvalidOperationException(SR.Get(SRID.Storyboard_BeginStoryboardNoStoryboard, BeginStoryboardName));
}
return storyboard;
}
private string _beginStoryboardName = null;
}
}
// 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
- TypeUsageBuilder.cs
- HierarchicalDataBoundControl.cs
- DirectoryNotFoundException.cs
- BoundingRectTracker.cs
- OdbcErrorCollection.cs
- CodeSubDirectory.cs
- SubqueryRules.cs
- XamlSerializer.cs
- StandardOleMarshalObject.cs
- RegistryKey.cs
- XPathNodePointer.cs
- CheckableControlBaseAdapter.cs
- SqlUtils.cs
- QilXmlReader.cs
- TemplateBamlRecordReader.cs
- CharacterShapingProperties.cs
- ContentPropertyAttribute.cs
- RtfControls.cs
- XmlNodeReader.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CrossSiteScriptingValidation.cs
- ValidationManager.cs
- SocketPermission.cs
- OptimizedTemplateContentHelper.cs
- SchemaImporterExtensionElement.cs
- ToolStripSeparator.cs
- EventSinkActivity.cs
- AppSettingsReader.cs
- RemotingException.cs
- TextEditorContextMenu.cs
- LowerCaseStringConverter.cs
- ComponentCollection.cs
- PropertyAccessVisitor.cs
- InternalsVisibleToAttribute.cs
- ClientTargetCollection.cs
- PeerTransportListenAddressValidatorAttribute.cs
- TaiwanCalendar.cs
- FunctionCommandText.cs
- DependencyObjectProvider.cs
- securestring.cs
- URL.cs
- FormatConvertedBitmap.cs
- ConnectionManagementSection.cs
- ProfilePropertySettings.cs
- controlskin.cs
- DataSysAttribute.cs
- ClosableStream.cs
- DataSet.cs
- CollectionView.cs
- ValuePattern.cs
- ReadOnlyNameValueCollection.cs
- Padding.cs
- NullReferenceException.cs
- PrintDialog.cs
- TdsParserHelperClasses.cs
- NameValuePair.cs
- DetailsViewInsertedEventArgs.cs
- MarshalByRefObject.cs
- HttpApplicationStateBase.cs
- KeyEvent.cs
- TypeCollectionDesigner.xaml.cs
- Metadata.cs
- SynchronizedInputAdaptor.cs
- MemberAccessException.cs
- JsonSerializer.cs
- TreeNodeClickEventArgs.cs
- CompilerCollection.cs
- Quaternion.cs
- FontFaceLayoutInfo.cs
- GeneralTransformCollection.cs
- RefExpr.cs
- SqlInternalConnectionSmi.cs
- Popup.cs
- BidPrivateBase.cs
- JavaScriptString.cs
- ServiceOperationListItemList.cs
- StreamMarshaler.cs
- ExecutionEngineException.cs
- AbstractExpressions.cs
- CriticalExceptions.cs
- AccessedThroughPropertyAttribute.cs
- HttpListener.cs
- FacetChecker.cs
- CannotUnloadAppDomainException.cs
- ConsoleEntryPoint.cs
- DataGridViewRowPostPaintEventArgs.cs
- ConnectionConsumerAttribute.cs
- SoapServerMessage.cs
- XmlSchemaSimpleType.cs
- TransactionProtocol.cs
- Icon.cs
- CodePageUtils.cs
- Point3DCollection.cs
- ValidationRule.cs
- WSSecurityPolicy12.cs
- DateTime.cs
- BulletDecorator.cs
- Point3DCollectionConverter.cs
- XmlC14NWriter.cs
- Thickness.cs