What is the difference between "User Control" and "Page" in Silverlight? - 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.

Related

WPF Ribbon Navigation Buttons - How to use

If you create an empty WPF app, and replace the MainWindow.xaml with the following:
<ribbon:Ribbon xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" />
(Note the use of the Ribbon class, not RibbonWindow as is used in most tutorials on the subject.)
Then delete MainWindow.cs and run the app.
It will give you a nice looking window with IE like navigation buttons and under that, the actual ribbon bar.
How do I use those navigation buttons? I have found lots of info on the rest of the Ribbon Bar, but not the navigation buttons.
I have an app with has a navigation stack and I just need to be able to fire an event when the user clicks forward/backward so I can have the app navigate. And of course, I need to be able to enable or disable them depending on the navigation stack.
I have looked, but I don't see any property of the RibbonClass that exposes the buttons.
Navigation buttons are part of the navigation mechanics built into WPF since its Avalon times. They have nothing in common with Ribbon.
See details here:
https://learn.microsoft.com/en-us/dotnet/framework/wpf/app-development/navigation-overview
Well, after no responses here, and no luck Googling, I have come to the conclusion that the navigation buttons are not officially supported, and there are no properties exposing them. I went as far as searching through the source code which is available as part of the WPF Ribbon Download but I found nothing.
So am going to mark this as answered for now.

WebBrowser control doesn't open links

I'm using the default WebBrowser control inside a WPF application. HTML code is loaded using NavigateToString method (html is passed as a parameter).
Pages render correctly, but users aren't able to click on any links (nothing happens when they click on the links). The problem was partly solved by adding the URLs to trusted zone, but that is not always possible.
Are there any configurations that should be adjusted in IE (or wherever else) that would allow opening any links inside an embedded WebBrowser?
in my case using MyWebBrowser.Navigate(new Uri(...)); works, and hyperlinks work as designed but when i use MyWebBrowser.NavigateToString(htmlContent); hyperlinks stop working

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

Making a Wizard in Silverlight + Xaml

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.

Embedding of Webbrowser in WPF Form with Address bar + Buttons

I wouldlike to embed a webbrowser in a WPF application. The browser should look like a normal browser, with address bar, back and forward button and status bar. Is there a way how that could easily written in XAML, with a direct databinding of the address to a textbox, with a direct routing of events from the buttons to the webbrowser object, and the enabling back?
Why not?
Here and here are uploaded some screenshots from our application which has WebModule inside and is able to work like browser.
In our implementation we used Windows Forms WebBrowser control as browser engine and MVVM as communication pattern. Model has navigation commands (forward, back, ...) that raise proper events. View is handling this events and delegate requested actions to inner WebBrowser component. Additionally view is handling WebBrowser's events (NewWindow, DocumentCompleted, Navigating, Navigated) and setting up model's state.
Model and view together contain about 500 lines of code (I don't think it's very much, do you?).
Of course, I should mention, that due to using IE engine this browser could have some problems on complicated web-sites.
P.S. We didn't use System.Windows.Controls.WebBrowser because it does not provide access to NewWindow event.
P.P.S. I've posted this answer from browser in our WPF application. Good luck!

Resources