Вызовите NavigationService из Silverlight UserControl, который содержит фрейм навигации - PullRequest
1 голос
/ 08 марта 2012

У меня есть UserControl, который содержит фрейм с UriMapper.Это также мой 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();

. Я могу вызвать NavigationService со страниц (Page1 и Page2), но как я могу вызвать NavigationService из этого «родительского» UserControl?Является ли это возможным?В этом UserControl NavigationService всегда имеет значение null.

Я хотел бы либо получить доступ к NavigationService со страниц, показанных в фрейме, либо передать событие нажатия кнопки на эти страницы.

Донне нужно помещать кнопку на каждой странице и обрабатывать навигацию там.

1 Ответ

2 голосов
/ 09 марта 2012

Попробуйте использовать

ContentFrame.Navigate(YOUR_URI);

и

ContentFrame.GoBack();

в родительском элементе управления UserControl, который содержит фрейм навигации с x: Name = "ContentFrame".

...