Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / VisualStateGroup.cs / 1458001 / VisualStateGroup.cs
// -------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All Rights Reserved. // ------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; using System.Windows.Markup; using System.Windows.Media.Animation; namespace System.Windows { ////// A group of mutually exclusive visual states. /// [ContentProperty("States")] [RuntimeNameProperty("Name")] public class VisualStateGroup : DependencyObject { ////// The Name of the VisualStateGroup. /// public string Name { get; set; } ////// VisualStates in the group. /// public IList States { get { if (_states == null) { _states = new FreezableCollection(); } return _states; } } /// /// Transitions between VisualStates in the group. /// public IList Transitions { get { if (_transitions == null) { _transitions = new FreezableCollection(); } return _transitions; } } /// /// VisualState that is currently applied. /// public VisualState CurrentState { get; internal set; } internal VisualState GetState(string stateName) { for (int stateIndex = 0; stateIndex < States.Count; ++stateIndex) { VisualState state = (VisualState)States[stateIndex]; if (state.Name == stateName) { return state; } } return null; } internal CollectionCurrentStoryboards { get { if (_currentStoryboards == null) { _currentStoryboards = new Collection (); } return _currentStoryboards; } } internal void StartNewThenStopOld(FrameworkElement element, params Storyboard[] newStoryboards) { // Remove the old Storyboards. Remove is delayed until the next TimeManager tick, so the // handoff to the new storyboard is unaffected. for (int index = 0; index < CurrentStoryboards.Count; ++index) { if (CurrentStoryboards[index] == null) { continue; } CurrentStoryboards[index].Remove(element); } CurrentStoryboards.Clear(); // Start the new Storyboards for (int index = 0; index < newStoryboards.Length; ++index) { if (newStoryboards[index] == null) { continue; } newStoryboards[index].Begin(element, HandoffBehavior.SnapshotAndReplace, true); // Hold on to the running Storyboards CurrentStoryboards.Add(newStoryboards[index]); // Silverlight had an issue where initially, a checked CheckBox would not show the check mark // until the second frame. They chose to do a Seek(0) at this point, which this line // is supposed to mimic. It does not seem to be equivalent, though, and WPF ends up // with some odd animation behavior. I haven't seen the CheckBox issue on WPF, so // commenting this out for now. // newStoryboards[index].SeekAlignedToLastTick(element, TimeSpan.Zero, TimeSeekOrigin.BeginTime); } } internal void RaiseCurrentStateChanging(FrameworkElement stateGroupsRoot, VisualState oldState, VisualState newState, FrameworkElement control) { if (CurrentStateChanging != null) { CurrentStateChanging(stateGroupsRoot, new VisualStateChangedEventArgs(oldState, newState, control, stateGroupsRoot)); } } internal void RaiseCurrentStateChanged(FrameworkElement stateGroupsRoot, VisualState oldState, VisualState newState, FrameworkElement control) { if (CurrentStateChanged != null) { CurrentStateChanged(stateGroupsRoot, new VisualStateChangedEventArgs(oldState, newState, control, stateGroupsRoot)); } } /// /// Raised when transition begins /// public event EventHandlerCurrentStateChanged; /// /// Raised when transition ends and new state storyboard begins. /// public event EventHandlerCurrentStateChanging; private Collection _currentStoryboards; private FreezableCollection _states; private FreezableCollection _transitions; } } // 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
- AmbientLight.cs
- XmlComment.cs
- RijndaelCryptoServiceProvider.cs
- XmlObjectSerializerReadContextComplexJson.cs
- HashCodeCombiner.cs
- ProtocolsConfiguration.cs
- SpeakCompletedEventArgs.cs
- DataRecordInfo.cs
- PrintingPermission.cs
- URLMembershipCondition.cs
- SynchronizationFilter.cs
- Translator.cs
- XslNumber.cs
- RemotingServices.cs
- safex509handles.cs
- XmlNodeList.cs
- WsdlParser.cs
- ConfigurationLockCollection.cs
- ItemAutomationPeer.cs
- CodeCommentStatementCollection.cs
- APCustomTypeDescriptor.cs
- ServiceBuildProvider.cs
- SmtpMail.cs
- ActivationArguments.cs
- MultiBindingExpression.cs
- CrossContextChannel.cs
- Drawing.cs
- InputMethodStateChangeEventArgs.cs
- LinqDataSourceInsertEventArgs.cs
- _SafeNetHandles.cs
- AddingNewEventArgs.cs
- IPCCacheManager.cs
- UserValidatedEventArgs.cs
- SrgsDocument.cs
- StringArrayConverter.cs
- Trace.cs
- XDRSchema.cs
- StoreItemCollection.cs
- ToolStripDropDown.cs
- SafeNativeMethods.cs
- ObjectList.cs
- CodeDOMUtility.cs
- PersonalizableTypeEntry.cs
- Expander.cs
- WorkflowApplicationAbortedException.cs
- Attachment.cs
- ConfigXmlComment.cs
- Inline.cs
- LongValidator.cs
- CutCopyPasteHelper.cs
- WindowsScrollBar.cs
- ComUdtElementCollection.cs
- ToolStripItemImageRenderEventArgs.cs
- TextMetrics.cs
- XmlSubtreeReader.cs
- WindowsHyperlink.cs
- BinaryCommonClasses.cs
- HandlerBase.cs
- GridViewColumnHeaderAutomationPeer.cs
- AttributeCollection.cs
- StylusDownEventArgs.cs
- TypeSystem.cs
- TemplateAction.cs
- CommandCollectionEditor.cs
- ReadOnlyNameValueCollection.cs
- SqlProcedureAttribute.cs
- EncoderFallback.cs
- TrackingLocationCollection.cs
- SecurityManager.cs
- DefaultParameterValueAttribute.cs
- RectConverter.cs
- SecurityPolicySection.cs
- XmlSchemaComplexType.cs
- ElapsedEventArgs.cs
- Int16AnimationBase.cs
- Function.cs
- DescriptionAttribute.cs
- _RequestLifetimeSetter.cs
- Stacktrace.cs
- ExpressionVisitor.cs
- DataGridViewRowCancelEventArgs.cs
- SystemPens.cs
- CellCreator.cs
- Application.cs
- StringReader.cs
- UiaCoreProviderApi.cs
- InlineUIContainer.cs
- ExpressionBinding.cs
- sitestring.cs
- TextUtf8RawTextWriter.cs
- NavigatingCancelEventArgs.cs
- DocComment.cs
- TCPListener.cs
- ShapeTypeface.cs
- GroupLabel.cs
- HttpsTransportBindingElement.cs
- Wildcard.cs
- _NegoStream.cs
- EventLogPermission.cs
- WebPartZone.cs