从包含导航框架的Silverlight UserControl调用NavigationService

时间:2012-03-08 18:41:13

标签: silverlight navigationservice

我有一个包含带有UriMapper的Frame的UserControl。这也是我的RootVisual,因此它是加载应用程序时加载的内容。这是我的(简化)XAML:

<UserControl>
    <navigation:Frame x:Name="ContentFrame" Source="/Page1">
        <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>

<HyperlinkButton x:Name="Page1Link" NavigateUri="/Page1" TargetName="ContentFrame" Content="Page1"/>
<HyperlinkButton x:Name="Page2Link" NavigateUri="/Page2" TargetName="ContentFrame" Content="Page2"/>
</UserControl>

这一切都很好,但现在我想添加一个后退按钮。当用户点击按钮时,我想调用

NavigationService.GoBack();

我可以从页面(Page1和Page2)调用NavigationService,但是如何从这个'父'UserControl调用NavigationService?可能吗?在此UserControl中,NavigationService始终为null。

我想要从Frame中显示的页面访问NavigationService,或者将按钮点击事件传递给这些页面。

我不想在每个页面中放置一个按钮并在那里处理导航。

1 个答案:

答案 0 :(得分:2)

尝试使用

ContentFrame.Navigate(YOUR_URI);

ContentFrame.GoBack();

在包含x:Name =“ContentFrame”的导航框架的父UserControl中。