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
- TypeElement.cs
- GuidelineSet.cs
- SoapSchemaExporter.cs
- ResXResourceReader.cs
- SizeLimitedCache.cs
- LinqToSqlWrapper.cs
- ExtenderProvidedPropertyAttribute.cs
- XmlBindingWorker.cs
- ToolStripTextBox.cs
- VariableExpressionConverter.cs
- EastAsianLunisolarCalendar.cs
- ButtonBaseAdapter.cs
- CryptoProvider.cs
- QuotaThrottle.cs
- MappingSource.cs
- ValidatingReaderNodeData.cs
- NonParentingControl.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ContentPathSegment.cs
- InheritanceService.cs
- GorillaCodec.cs
- followingquery.cs
- SmtpDigestAuthenticationModule.cs
- ManualResetEventSlim.cs
- EncoderParameters.cs
- WindowsUpDown.cs
- CapabilitiesState.cs
- FontInfo.cs
- WinFormsSecurity.cs
- OutputCacheModule.cs
- StrokeSerializer.cs
- RawAppCommandInputReport.cs
- HttpBrowserCapabilitiesBase.cs
- QfeChecker.cs
- SimpleFileLog.cs
- SuppressedPackageProperties.cs
- ObjectContext.cs
- FontUnitConverter.cs
- BitSet.cs
- Mouse.cs
- DesignerLinkAdapter.cs
- oledbmetadatacollectionnames.cs
- ToolboxDataAttribute.cs
- XmlComment.cs
- XmlSortKey.cs
- ShapeTypeface.cs
- ActivityDesignerLayoutSerializers.cs
- WebBrowserUriTypeConverter.cs
- UpdatableWrapper.cs
- SignedInfo.cs
- OperationGenerator.cs
- WindowCollection.cs
- SqlDataSourceView.cs
- Odbc32.cs
- TypeReference.cs
- QilIterator.cs
- GenericIdentity.cs
- CachedPathData.cs
- CompositeFontFamily.cs
- CursorConverter.cs
- DebugTraceHelper.cs
- TypeConverter.cs
- VisualProxy.cs
- TextWriterTraceListener.cs
- SerializationAttributes.cs
- SqlReferenceCollection.cs
- ScriptingWebServicesSectionGroup.cs
- XmlWrappingReader.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- Stylesheet.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- DiagnosticsConfigurationHandler.cs
- ProxyRpc.cs
- Panel.cs
- GridViewColumnCollection.cs
- FillRuleValidation.cs
- TextServicesCompartmentEventSink.cs
- ControlTemplate.cs
- exports.cs
- ToolStripRendererSwitcher.cs
- LinqMaximalSubtreeNominator.cs
- CommentEmitter.cs
- PathSegment.cs
- WindowsAltTab.cs
- TableLayoutColumnStyleCollection.cs
- FormsAuthenticationCredentials.cs
- Composition.cs
- InvalidFilterCriteriaException.cs
- TreeNodeStyle.cs
- EventItfInfo.cs
- ExeContext.cs
- MultiPageTextView.cs
- EdmMember.cs
- XmlSerializationWriter.cs
- ThicknessConverter.cs
- RegularExpressionValidator.cs
- CollectionViewSource.cs
- SharedPersonalizationStateInfo.cs
- AdPostCacheSubstitution.cs
- DescendantBaseQuery.cs