2016-10-10 1 views
1

в моем приложении UWP У меня есть ситуация, что я использую два кадра.Кадр UWP в рамке навигации - Как получить доступ к родительскому фрейму?

Например, главная страница имеет фрейм (MainFrame) и загружает в этот фрейм подстраницу, это также имеет фрейм (SubFrame1) и загружает третью страницу в этот кадр.

Теперь я хочу изменить содержимое MainFrame, нажав кнопку на третьей странице.

Когда я использую:

this.Frame.Navigate(typeof(FourthPage)); 

Он загружает FourthPage в кадре из подстраниц (SubFrame1), но я хочу, чтобы загрузить FourthPage в MainFrame.

ответ

2

Просто, например, здесь, если ваша третья страница выглядит так:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Button Content="Navi from parent" Click="Button_Click" /> 
</Grid> 

Затем в случае нажатия кнопки вы можете найти ваш MainFrame так:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var grid = this.Frame.Parent as Grid; 
    var page = grid.Parent as SubFramePage; 
    var mainframe = page.Parent as Frame; 
    mainframe.Navigate(typeof(FourthPage)); 
} 

Это просто образец, может быть, ваш макет не такой, так это то, что вы можете найти родительский слой за слоем.

0

Главная страница есть это:

<SplitView> 
    <SplitView.Pane> 
    </SplitView.Pane> 
    <SplitView.Content> 
     <Frame Name="MainFrame"></Frame> 
    </SplitView.Content> 
</SplitView> 

Теперь другая страница навигация в этом «MainFrame»:

MainFrame.Navigate(typeof(AnotherPage)); 

Значение «MainFrame» теперь родительский фрейм и внутри него, другой кадр выделяется.

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

Frame parentFrame = Window.Current.Content as Frame; 
parentFrame.Navigate(typeof(MainPage)); 
Смежные вопросы