代码之家  ›  专栏  ›  技术社区  ›  Brad Christie

使用超链接从子控件更改父导航框架

  •  3
  • Brad Christie  · 技术社区  · 14 年前

    我认为我可能难以用词表达它(对于Silverlight及其控件来说是新的),但总的目标和问题是:

    我用“mainpage.xaml”创建了一个Silverlight应用程序。页面中有一个网格,它有两个基本控件:导航:框架(我们可以像微软在演示中那样称此ContentFrame)和我创建的另一个控件,包括页面顶部横幅和简单导航[为了这个解决方案,可以称为横幅控制]

    BannerControl中有指向(或应该指向)我的项目中各个页面的链接。他们单击横幅中的链接,然后主页应该填充ContentFrame(或者我希望如此)。但情况似乎并非如此。

    我的第一个想法是如何控制相关和班纳Control是一个孩子,不可能看到导航框架。也许正是我对这一切应该如何运作的解释极不恰当,给了我一些问题,但不管怎样,我都处在一个路障上。

    有人能给我一些指导,告诉我怎样才能得到工作的链接吗?

    MainPage.xaml:

    <Grid x:Name="LayoutRoot" Style="{StaticResource LayoutRootStyle}">
        <Grid x:Name="ContentRoot" Style="{StaticResource ContentRootStyle}">
            <StackPanel>
                <local:NavigationBar/>
                <navigation:Frame x:Name="ContentFrame" Source="/Pages" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed" Margin="25,5">
                    <navigation:Frame.UriMapper>
                        <uriMapper:UriMapper>
                            <uriMapper:UriMapping Uri="" MappedUri="/Pages/Welcome.xaml"/>
                            <uriMapper:UriMapping Uri="/IT/{pageName}" MappedUri="/pages/IT/{pageName}.xaml"/>
                            <uriMapper:UriMapping Uri="/RM/{pageName}" MappedUri="/pages/IT/{pageName}.xaml"/>
                            <uriMapper:UriMapping Uri="/RSG/{pageName}" MappedUri="/pages/IT/{pageName}.xaml"/>
                            <uriMapper:UriMapping Uri="/RSM/{pageName}" MappedUri="/pages/IT/{pageName}.xaml"/>
                            <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/pages/{pageName}.xaml"/>
                        </uriMapper:UriMapper>
                    </navigation:Frame.UriMapper>
                </navigation:Frame>
            </StackPanel>
        </Grid>
    </Grid>
    

    横幅内的链接:

    <StackPanel x:Name="NavBarSubNavRSG" Style="{StaticResource NavBarSubNavStyle}" 
                Visibility="Collapsed">
        <Rectangle Style="{StaticResource NavBarSubNavPadStyle}"/>
        <HyperlinkButton x:Name="NavBarSubRSGOneLink" Content="RSG One" 
                         Style="{StaticResource NavBarSubNavLinkStyle}"/>
        <Rectangle Style="{StaticResource NavBarSubNavRectStyle}"/>
        <HyperlinkButton x:Name="NavBarSubRSGTwoLink" Content="RSG Two" 
                         Style="{StaticResource NavBarSubNavLinkStyle}"/>
        <Rectangle Style="{StaticResource NavBarSubNavRectStyle}"/>
        <HyperlinkButton x:Name="NavBarSubRSGThreeLink" Content="RSG Three" 
                         Style="{StaticResource NavBarSubNavLinkStyle}"/>
        <Rectangle Style="{StaticResource NavBarSubNavRectStyle}"/>
        <HyperlinkButton x:Name="NavBarSubRSGFourLink" Content="RSG Four" 
                         Style="{StaticResource NavBarSubNavLinkStyle}"/>
    </StackPanel>
    
    1 回复  |  直到 13 年前
        1
  •  3
  •   Ozan HELPY    14 年前

    您需要设置超链接按钮的navigateUri和targetname属性。navigateuri指向页面的uri,targetname是帧的x:name:

    <sdk:Frame 
       x:Name="ContentFrame"/> 
    
    ...
    
    <HyperlinkButton 
        x:Name="NavBarSubRSGFourLink" 
        Content="RSG One" 
        NavigateUri="RSGOne.xaml" 
        Target="ContentFrame"/>