Изменить родительский фрейм навигации с дочернего элемента управления с гиперссылкой - PullRequest
3 голосов
/ 02 июля 2010

Я думаю, что, возможно, у меня возникли проблемы с формулировкой (будучи новичком в Silverlight и его элементах управления), но общая цель и проблема заключаются в следующем:

Я создал приложение silverlight с помощью «MainPage.xaml». Внутри страницы находится сетка, которая имеет два основных элемента управления: навигацию: Frame [мы можем назвать этот ContentFrame, как Microsoft сделала это в своих демонстрациях] и другой созданный мной элемент управления, состоящий из баннера в верхней части страницы и простой навигации ради этого решения это можно назвать BannerControl]

BannerControl имеет ссылки в этой точке (или должны указывать) на различные страницы в моем проекте. Они нажимают на ссылку в баннере, и затем MainPage должна заполнить ContentFrame (или я так надеюсь). Похоже, что это не так.

Сначала я подумал о том, как связаны элементы управления, а BannerControl является дочерним элементом и, возможно, не видит NavigationFrame. Может быть, это моя неумелая интерпретация того, как все это должно работать, и это вызывает у меня проблемы, но в любом случае я нахожусь в блокпосте.

Может ли кто-нибудь дать мне руководство относительно того, как я могу заставить работать ссылки?

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 Ответ

3 голосов
/ 04 июля 2010

Вам необходимо установить свойства NavigateUri и TargetName вашей кнопки HyperlinkButton. NavigateUri указывает на Uri вашей страницы, а TargetName - это x: Имя вашего фрейма:

<sdk:Frame 
   x:Name="ContentFrame"/> 

...

<HyperlinkButton 
    x:Name="NavBarSubRSGFourLink" 
    Content="RSG One" 
    NavigateUri="RSGOne.xaml" 
    Target="ContentFrame"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...