首先需要引入 System.windows.Navigation.dll,然后创建SilverLight Navigation Web就会自动生成一个网站框架。
其中在Styles.xaml相当与CSS一样。
创建导航栏:
<Grid x:Name="NavigationGrid" Style="{StaticResource NavigationGridStyle}">
<Border x:Name="BrandingBorder" Style="{StaticResource BrandingBorderStyle}">
<StackPanel x:Name="BrandingStackPanel" Style="{StaticResource BrandingStackPanelStyle}">
<ContentControl Style="{StaticResource LogoIcon}"/>
<TextBlock x:Name="ApplicationNameTextBlock" Style="{StaticResource ApplicationNameStyle}"
Text="应用程序名"/>
</StackPanel>
</Border>
<Border x:Name="LinksBorder" Style="{StaticResource LinksBorderStyle}">
<StackPanel x:Name="LinksStackPanel" Style="{StaticResource LinksStackPanelStyle}">
<HyperlinkButton x:Name="Link1" Style="{StaticResource LinkStyle}"
NavigateUri="/Home" TargetName="ContentFrame" Content="主页"/>
<Rectangle x:Name="Divider1" Style="{StaticResource DividerStyle}"/>
<HyperlinkButton x:Name="Link2" Style="{StaticResource LinkStyle}"
NavigateUri="/About" TargetName="ContentFrame" Content="关于"/>
<HyperlinkButton x:Name="Link3" Style="{StaticResource LinkStyle}"
NavigateUri="/School" TargetName="ContentFrame" Content="学校"/>
</StackPanel>
</Border>
</Grid>
创建建网站主体:
<Border x:Name="ContentBorder" Style="{StaticResource ContentBorderStyle}">
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}"
Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
<uriMapper:UriMapping Uri="School" MappedUri="/Views/School.xaml"/>
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
</Border>
使用navigation:Frame.UriMapper后,就不需要自己调用Navigation()方法了,只需要配置到 uriMapper中就可以了,
否则需要:
- stringuriText = String.Format("/Product.xaml?id={0}&type={1}",productID, productType);
- mainFrame.Navigate(newUri(uriText),UriKind.Relative);
然后再领一个页面中取值
- intproductID, type;
- if (this.NavigationContext.QueryString.ContainsKey("productID"))
- productID = Int32.Parse(this.NavigationContext.QueryString["productID"]);
- if (this.NavigationContext.QueryString.ContainsKey("type"))
- type = Int32.Parse(this.NavigationContext.QueryString["type"]);