Von
Max Knor
19. July 2009 23:59
Für die Beta von Silverlight wurde hier bereits ein Beitrag verfasst:
Generell gibt es zwei Möglichkeiten zu navigieren:
Mittels Hyperlinkbutton
<HyperlinkButton Content="about"
NavigateUri="/About.xaml" TargetName="ContentFrame" />
Oder manuell
this.ContentFrame.Navigate(new Uri("/Home.xaml", UriKind.Relative));
Will man das Format der URL selber bestimmen, so kann man einen UriMapper dazu einsetzen:
<navigation:Frame>
...
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/> // Default
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
Nun wird z.B. die URL http://silverlight/Default.aspx#/About automatisch auf /Views/About.xaml gemappt, http://silverlight/Default.aspx hingegen auf Home.xaml.
Für interaktive Anwendungen ist es übrigens auch möglich, Url Parameter (QueryStrings) an Silverlight zu übergeben.
So kann man z.B. eine generische Detailseite für Informationen bauen, welche Infos dargestellt werden sollen, wird per Parameter übergeben.
Die Url könnte zum Beispiel http://localhost:61525/Default.aspx#/Details?id=1234 lauten.
In der Seite hat man über die NavigationContext Eigenschaft Zugriff auf den QueryString:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (this.NavigationContext.QueryString.ContainsKey("id"))
{
string id = this.NavigationContext.QueryString["id"];
// Do something with id
}
}
knom