by Steven
8. May 2010 23:32
If you want to navigate between screens in SketchFlow you can put this class at the top level in your namespace and it will do the bulk of the work for you. The code also details the meaning of the parameters you need to pass in to make it work.
/// <summary>
/// A global navigator instance that allows programmatic
/// navigation between screens in SketchFlow.
/// </summary>
public static class Navigator
{
/// <summary>
/// Adds a navigation option to the global navigator.
/// </summary>
/// <param name="target">The namespace qualified name of the page we are navigating to.</param>
/// <param name="eventname">The name of the event to watch for in the "obj" parameter</param>
/// <param name="obj">The object, such as a button.</param>
public static void Add(string target, string eventname, DependencyObject obj)
{
// Create a navigation instance of the screen we are navigating to
Microsoft.Expression.Prototyping.Behavior.NavigateToScreenAction navigateAction
= new Microsoft.Expression.Prototyping.Behavior.NavigateToScreenAction();
navigateAction.TargetScreen = target;
// create a trigger to fire the action
System.Windows.Interactivity.EventTrigger clickTrigger
= new System.Windows.Interactivity.EventTrigger(eventname);
clickTrigger.Actions.Add(navigateAction);
// associate the trigger with the object
System.Windows.Interactivity.TriggerCollection triggerCollection
= System.Windows.Interactivity.Interaction.GetTriggers(obj);
triggerCollection.Add(clickTrigger);
}
}
To use it, you can put this after InitializeComponent(); in the class on the screen you are invoking the action from.
Navigator.Add("MyScreens.Screen_1_4", "Click", this.MyButton);