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
- SyndicationContent.cs
- ReplyChannelBinder.cs
- MemberJoinTreeNode.cs
- WindowsFont.cs
- ToolStripCustomTypeDescriptor.cs
- SplitterPanel.cs
- DependencyObjectType.cs
- SoapAttributeAttribute.cs
- DBCSCodePageEncoding.cs
- TextShapeableCharacters.cs
- MasterPage.cs
- Stack.cs
- SecureStringHasher.cs
- ToolStripItemImageRenderEventArgs.cs
- PageAsyncTaskManager.cs
- ControllableStoryboardAction.cs
- SocketException.cs
- TextElement.cs
- StickyNoteHelper.cs
- listitem.cs
- HMAC.cs
- ToolboxItem.cs
- InstalledFontCollection.cs
- ToolStripItemImageRenderEventArgs.cs
- XmlIlVisitor.cs
- WeakReadOnlyCollection.cs
- SerializationFieldInfo.cs
- HScrollBar.cs
- ConfigurationSchemaErrors.cs
- CodeValidator.cs
- ModuleBuilderData.cs
- IntegrationExceptionEventArgs.cs
- TitleStyle.cs
- EventMappingSettingsCollection.cs
- DelegateSerializationHolder.cs
- DeploymentSection.cs
- FileSystemInfo.cs
- DropTarget.cs
- WebRequestModuleElement.cs
- CodeArgumentReferenceExpression.cs
- ImageSourceConverter.cs
- SortAction.cs
- ReverseQueryOperator.cs
- SharedDp.cs
- CheckBoxPopupAdapter.cs
- FormsIdentity.cs
- ComponentChangingEvent.cs
- SoapInteropTypes.cs
- TypedReference.cs
- ListenerAdapter.cs
- QueryRewriter.cs
- NativeRecognizer.cs
- FragmentNavigationEventArgs.cs
- MethodBuilder.cs
- ResolveCriteriaCD1.cs
- WebPartMinimizeVerb.cs
- DBSchemaRow.cs
- ImportCatalogPart.cs
- sqlstateclientmanager.cs
- UpdatePanel.cs
- PolicyValidationException.cs
- TextEditorMouse.cs
- Compilation.cs
- ModelTreeEnumerator.cs
- WindowCollection.cs
- QueryCursorEventArgs.cs
- SessionStateContainer.cs
- MenuAdapter.cs
- FolderBrowserDialog.cs
- DataColumn.cs
- OpCodes.cs
- SettingsContext.cs
- CancelRequestedRecord.cs
- BindingContext.cs
- AvTraceDetails.cs
- SQLBinary.cs
- SqlCacheDependencyDatabaseCollection.cs
- StringComparer.cs
- UserPreferenceChangingEventArgs.cs
- Win32.cs
- CodeNamespaceImportCollection.cs
- SubMenuStyle.cs
- CodeCastExpression.cs
- ViewBox.cs
- TypeTypeConverter.cs
- AmbientValueAttribute.cs
- GetKeyedHashRequest.cs
- DateTimeFormat.cs
- ListSortDescriptionCollection.cs
- CheckStoreFileValidityRequest.cs
- CalculatedColumn.cs
- CriticalFinalizerObject.cs
- VirtualPathProvider.cs
- BufferedGraphics.cs
- DrawingVisual.cs
- ObjectTokenCategory.cs
- StatusBarPanelClickEvent.cs
- UnsafeNativeMethodsTablet.cs
- ObjectSet.cs
- EventManager.cs