Code:
/ 4.0 / 4.0 / 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. // -------------------------------------------------------------------- // 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
- GeneralTransformGroup.cs
- DesignerAutoFormat.cs
- AttachedAnnotation.cs
- XmlWriterTraceListener.cs
- ClusterRegistryConfigurationProvider.cs
- XmlSerializer.cs
- PrincipalPermission.cs
- ScaleTransform.cs
- DefaultHttpHandler.cs
- EdmScalarPropertyAttribute.cs
- RangeValidator.cs
- BaseDataBoundControl.cs
- KeyEventArgs.cs
- MobileListItem.cs
- HostedHttpContext.cs
- DocumentScope.cs
- AppDomainProtocolHandler.cs
- StyleModeStack.cs
- PatternMatcher.cs
- DataGridViewBand.cs
- MgmtResManager.cs
- _SslStream.cs
- CompoundFileStorageReference.cs
- MsmqProcessProtocolHandler.cs
- RemotingSurrogateSelector.cs
- ContextToken.cs
- UnicodeEncoding.cs
- HashSetEqualityComparer.cs
- SerializerWriterEventHandlers.cs
- ServiceHostFactory.cs
- SymbolDocumentInfo.cs
- ShaderRenderModeValidation.cs
- XsdDataContractImporter.cs
- isolationinterop.cs
- ExpanderAutomationPeer.cs
- Int16.cs
- TextEditor.cs
- SourceElementsCollection.cs
- PackageStore.cs
- FullTrustAssemblyCollection.cs
- DisplayNameAttribute.cs
- PathParser.cs
- LoadedOrUnloadedOperation.cs
- _NetworkingPerfCounters.cs
- WindowsImpersonationContext.cs
- XmlArrayItemAttributes.cs
- InvalidComObjectException.cs
- TextFindEngine.cs
- DataGridToolTip.cs
- SplineQuaternionKeyFrame.cs
- EventLogInformation.cs
- TextBreakpoint.cs
- DetailsViewDeletedEventArgs.cs
- TypeCacheManager.cs
- ResourcesChangeInfo.cs
- safex509handles.cs
- TimerElapsedEvenArgs.cs
- ExtentJoinTreeNode.cs
- EdmPropertyAttribute.cs
- ImpersonateTokenRef.cs
- RequiredFieldValidator.cs
- BeginEvent.cs
- HtmlControlPersistable.cs
- DataBoundControlAdapter.cs
- ButtonChrome.cs
- SkewTransform.cs
- CustomSignedXml.cs
- BindingMemberInfo.cs
- VisualStyleElement.cs
- MenuTracker.cs
- SpotLight.cs
- TextSimpleMarkerProperties.cs
- Columns.cs
- Icon.cs
- ReceiveSecurityHeaderEntry.cs
- ToolStripOverflowButton.cs
- MLangCodePageEncoding.cs
- Asn1IntegerConverter.cs
- PersonalizationAdministration.cs
- PreviewPrintController.cs
- UserControlCodeDomTreeGenerator.cs
- KeyboardNavigation.cs
- SplashScreen.cs
- XmlILIndex.cs
- ProxySimple.cs
- AccessorTable.cs
- SymLanguageVendor.cs
- RuntimeDelegateArgument.cs
- XamlReaderHelper.cs
- MailAddress.cs
- FactoryRecord.cs
- SegmentTree.cs
- Events.cs
- CodeLinePragma.cs
- StorageEntityTypeMapping.cs
- FolderNameEditor.cs
- XPathNavigatorKeyComparer.cs
- RoutedUICommand.cs
- FormParameter.cs
- SqlDesignerDataSourceView.cs