您的位置:首页 > 其它

Silverlight之页面跳转及参数传递(9)

2012-04-15 20:18 405 查看
页面跳转及参数传递

代码下载

一、            页面跳转

1.        方式1 RootVisual

this.RootVisual =
new MainPage();
2.        方式2 Content属性

  Page1 p1 =new
Page1();
  this.Content=p1;
3.        方式3 Frame,HyperlinkButton

1)定义HyperlinkButton

          <HyperlinkButton Content="导航"
Height="23" HorizontalAlignment="Left" Margin="28,12,0,0" Name="hyperlinkButton1"
VerticalAlignment="Top" Width="100" NavigateUri="/page1.xaml" TargetName="frame1"
/>
 2)定义框架

        <sdk:Frame Height="190"
HorizontalAlignment="Left" Margin="12,75,0,0" Name="frame1" VerticalAlignment="Top"
Width="350" Source="/page2.xaml"/>
 
后台:
this.frame1.Navigate(newUri("/SilverlightControl2.xaml",UriKind.Relative));
 
4.        方式4 Border

 <Border BorderBrush="Silver" BorderThickness="1"
Height="100" Name="border1" Width="200"></Border>
 

  Page2 p2=new
Page2();
  border1.Child = p2;
 

5.        方式5 uriMapper

1)定义uriMapper

  <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:UriMapper>
                </navigation:Frame.UriMapper>
            </navigation:Frame>
2)应用

  <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="关于"/>
                    <Rectangle x:Name="Divider2"
Style="{StaticResource DividerStyle}"/>
                    <HyperlinkButton x:Name="Link3"
Style="{StaticResource LinkStyle}"

                                     NavigateUri="/PageTest"TargetName="ContentFrame" Content="测试"/>
                </StackPanel>
            </Border>
二、            页面间参数传递

Ø  普通参数传递方式

1)传递参数

  
 string uriText =
String.Format("/page3.xaml?UserID={0}&Role={1}",
"刘备",
"董事长");
    this.frame1.Navigate(new
Uri(uriText, UriKind.Relative));
 

2)接收参数

    this.lblUserID.Text= 
this.NavigationContext.QueryString["UserID"].ToString();
    this.lblRole.Text=
this.NavigationContext.QueryString["Role"].ToString();
 

Ø  利用UriMapper

  <uriMapper:UriMapper x:Name="PageMapper">
 
            <uriMapper:UriMapping Uri=""
MappedUri="/Views/Home.xaml"/>
            <uriMapper:UriMapping Uri="/About/{name}/{url}"
MappedUri="/Views/About.xaml?name={name}&url={url}"/>
            <uriMapper:UriMapping Uri="/About/{parameter}"
MappedUri="/Views/About.xaml?parameter={parameter}"/>
 
            <uriMapper:UriMapping Uri="/PageTest/{name}/{url}"
MappedUri="/Views/PageTest.xaml?UserName={name}&url={url}"/>
            <uriMapper:UriMapping Uri="/PageTest/{parameter}"
MappedUri="/Views/PageTest.xaml?parameter={parameter}"/>
 
            <uriMapper:UriMapping Uri="/{pageName}"
MappedUri="/Views/{pageName}.xaml"/>
        </uriMapper:UriMapper>
1)传递参数:

<HyperlinkButton x:Name="Link3"
Style="{StaticResource LinkStyle}"

                                     NavigateUri="/PageTest/传智播客/it.cast.net" TargetName="ContentFrame"
Content="测试"/>
 

2)接收参数:

  txtUserID.Text = "名字:" +
this.NavigationContext.QueryString["UserName"] +
"网址:" +
this.NavigationContext.QueryString["url"];
代码下载
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息