Making a Wizard in Silverlight + Xaml - silverlight

I have a Silverlight application and I am trying to make each step of a wizard in XAML files, instead of hard-coded C#.
The problem is that I don't understand how I am going to switch between them after click on next button of each screen.
What is the best way to do this? I saw some tutorials on the internet about XAML dynamically loaded but none of them seem to work with me :/

Use a ChildWindow as your parent window. Then create multiple UserControls which will be framed in the content of the parent window. In the code-behind of the parent window, load the user controls into a list and set the visibility to 'Collapsed' for all of them but the first. When the user presses the Next/Prev buttons, pull the appropriate UserControl from the list (keep track of the current index) and make it 'Visible' while making the current control 'Collapsed'.
All of your navigation code will be in the parent window, but the parent window won't be concerned about the content of the wizard steps itself.
Each UserControl can be coded in XAML as a separate control so you still maintain a separation of the control from your wizards navigation logic.
You can then create a class type that will hold all of the options for the various wizard controls. Pass a reference to an object instance to each of the controls for them to update. When you get to the end of the wizard, your option object should maintain the state of all the wizard steps and the parent window can return that to the application.

I would suggest looking into the Silverlight Navigation Framework. It allows you to use "urls" to navigate between "pages" (which are your XAML user controls). It also also users to use the back and forth buttons in the browser, which may or may not be something you want to allow.
There is a VS 2010 template when you choose New Project, Silverlight, "Silverlight Navigation Application" that will help get you started.

Related

WPF Standalone Application showing different views

I am building a WPF Standalone application. It consists of a menu on the left of the window and when a menu option is selected I want a page showing content related to the option selected shown on the right hand side of the window.
If a user selects a different menu option then the new view will be loaded.
If the user selects a previously selected menu option then that view will be shown but it will have held it's state. So if has a result set for customers with "bob" as a first name then when I view it again the result set will still be showing.
My questions is what is the best way to implement this.
Pages are not suitable as the app will not be viewed in a browser.
I could not see a Master Page -> content layout approach.
So is it a case of loading custom controls?
I am using the MVVM pattern.
Any help would be appreciated.
You could use TabControl with TabStripPlacement value set to "Left" - is that what you are looking for?
I managed to implement something similar detailed here using "workspaces". http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

MVVM Page Navigation

Have begun a WPF app following mvvm pattern and have hit an issue. I have a Customers page which has a number of searches and returns a list of customers. When I double click a record I want to be able to navigate to the Customer view so user can view/edit details.
Is this possible without using MVVMLight or WAF or PRISM(as I have struggled for a bit getting head into PRISM fully!!!) without forcing my view model to have knowledge of my application?
Thanks
Some people use Dependency Injection to connect VMs with Views in a decoupled way. Take a look at Unity
I would use a seperate / underlaying shell view & viewmodel with just the structure of your ui layout (some grids for positioning navigation, menu, search or content areas)
Then position your application views / controls the shell view. (maybe with some Visibility Bindings)
The main purpose of the shell viewmodel is to coordinate the flow of your ui. For example what control should hide or show based on some events of its child controls.
You could use an eventhandler in your search, wich is registered in the shell viewmodel, to show / hide your different content views.
Another approach could be a ContentPresenter.

Custom Menu UserControl WPF

I have created a custom Menu User control in WPF Browser application. How can I achieve Navigation from one page to other page using this Custom Menu User control from Main page. The pages would be displayed in other Frame control of the Main page.
There are different options to achieve this. Can you provide more details on how you're loading your UI? (i.e. Prism regions/modules, Data Templates, etc.)
My general suggestion would be one of two options:
Use a mediator pattern to have the menu control notify the frame control. MVVM Light has an easy to use Messenger implementation, which is a great toolkit to explore, in my opinion.
Have both controls contained in one "parent" control (or view model if you're using MVVM) which can then communicate to the frame control since it contains both menu and frame controls.
HTH,
Ben

What is the difference between "User Control" and "Page" in Silverlight?

I am really new to Silverlight. I am working through some of the sample codes I found online.
I notices sometimes a new "Page" is added, and sometimes a new "User Control" is added.What are the differences between those 2?
Btw, when I tried specifying the URL for a hyperlink as "www.apple.com", there is an error saying "www.apple.com" can not be found. Are there anyway of specifying an URL for a website for a HyperlinkButton?
Thanks :)
In SL3 and up; a Page correlates to the Navigation framework whereas a UserControl is a control providing a defined set of functionality using multiple controls which can then be used within a Page.
User Control:
When you build your project , any user control that you created will appear in the toolbox also. You can drag and drop it like any other control (like a button or a grid).User controls are used for enhanced flexibility. You can customize your controls, set as many properties you want , and it really simplifies things without going for creating custom controls.
Page:
However, when you come to a Page, you can use it mostly for Navigation . It can contain other controls , but it is mainly intended for Navigation within Frames.

How can I load a WPF (xaml) window inside of another WPF windows in a Panel?

Is this possible?
I used a Frame control and:
show(ex:showwindow.xaml)
But I get this error:
root element is not valid for navigation
sure you can navigate (show) a window by using:
YourFrame.Navigate(YourWindow);
However I don't like much this multi-window approach, better create some user controls for segmenting your application.
It is more common to use the Page class with the Frame control. Windows, in WPF are the top level items, with their own titlebar, chrome etc. Also, the Page can tap into the NavigationService provide by the framework.
more info about Navigation from Microsoft

Resources