84 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
// NoesisGUI - http://www.noesisengine.com
 | 
						|
// Copyright (c) 2013 Noesis Technologies S.L. All Rights Reserved.
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
 | 
						|
#ifndef __GUI_VISUALSTATEMANAGER_H__
 | 
						|
#define __GUI_VISUALSTATEMANAGER_H__
 | 
						|
 | 
						|
 | 
						|
#include <NsCore/Noesis.h>
 | 
						|
#include <NsCore/ReflectionDeclare.h>
 | 
						|
#include <NsGui/DependencyObject.h>
 | 
						|
#include <NsGui/AnimationApi.h>
 | 
						|
 | 
						|
 | 
						|
namespace Noesis
 | 
						|
{
 | 
						|
 | 
						|
class FrameworkElement;
 | 
						|
class VisualStateGroup;
 | 
						|
class VisualTransition;
 | 
						|
 | 
						|
template<class T> class UICollection;
 | 
						|
typedef UICollection<VisualStateGroup> VisualStateGroupCollection;
 | 
						|
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
/// Manages states and the logic for transitioning between states for controls.
 | 
						|
///
 | 
						|
/// The VisualStateManager enables you to specify states for a control, the appearance of a control
 | 
						|
/// when it is in a certain state, and when a control changes states.
 | 
						|
///
 | 
						|
/// http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager.aspx
 | 
						|
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
class NS_GUI_ANIMATION_API VisualStateManager: public DependencyObject
 | 
						|
{
 | 
						|
public:
 | 
						|
    VisualStateManager();
 | 
						|
    ~VisualStateManager();
 | 
						|
 | 
						|
    /// Gets or sets the VisualStateManager object that transitions between the states of a control
 | 
						|
    //@{
 | 
						|
    static VisualStateManager* GetCustomVisualStateManager(const DependencyObject* obj);
 | 
						|
    static void SetCustomVisualStateManager(DependencyObject* obj, VisualStateManager* value);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Gets or sets a collection of VisualStateGroup objects
 | 
						|
    //@{
 | 
						|
    static VisualStateGroupCollection* GetVisualStateGroups(const DependencyObject* obj);
 | 
						|
    static void SetVisualStateGroups(DependencyObject* obj, VisualStateGroupCollection* groups);
 | 
						|
    //@}
 | 
						|
 | 
						|
    /// Transitions the control between two states. Use this method to transition states on control
 | 
						|
    /// that has a ControlTemplate.
 | 
						|
    /// \param control The control to transition between states
 | 
						|
    /// \param stateName The state to transition to
 | 
						|
    /// \param useTransitions true to use a VisualTransition to transition between states, 
 | 
						|
    ///     otherwise false.
 | 
						|
    /// \return true if the control successfully transitioned to the new state, otherwise false.
 | 
						|
    static bool GoToState(FrameworkElement* control, Symbol stateName, bool useTransitions);
 | 
						|
    
 | 
						|
    /// Transitions the element between two states. Use this method to transition states that are 
 | 
						|
    /// defined by an application, rather than defined by a control.
 | 
						|
    /// \param root The root element that contains the VisualStateManager
 | 
						|
    /// \param stateName The state to transition to.
 | 
						|
    /// \param useTransitions true to use a VisualTransition object to transition between states
 | 
						|
    static bool GoToElementState(FrameworkElement* root, Symbol stateName,
 | 
						|
        bool useTransitions);
 | 
						|
 | 
						|
public:
 | 
						|
    /// Dependency properties
 | 
						|
    //@{
 | 
						|
    static const DependencyProperty* CustomVisualStateManagerProperty; // Attached
 | 
						|
    static const DependencyProperty* VisualStateGroupsProperty; // Attached
 | 
						|
    //@}
 | 
						|
 | 
						|
    NS_DECLARE_REFLECTION(VisualStateManager, DependencyObject)
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#endif
 |