2015-11-02 132 views
0

简单的问题,我不知道答案。多个页面的一个xaml页面?

是否有一种方法只使用一个xaml页面(至少一个“主”页面)来模拟多个页面。只使用一个页面

this.Frame.Navigate(typeof(Page2), null); 

:即同?

非常感谢,任何帮助表示赞赏。

回答

0

可以使用Frame控制托管您的主网页内的另一个页面:

<Frame Name="subFrame" Source="MyPage.xaml" /> 

然后可以使用subFrame.Navigate与你的榜样。

+0

难道这不会做同样的事情吗?转到视图中的其他xaml页面? – Badja

+0

我已经稍微更新了代码 - 它只会浏览框架控件中的页面 - 框架中的其余页面将保持不变。 – user882807

+0

我明白了,所以我会用这个代码导航到每个“',但是'subFrame's都会在同一个'xaml'文件中? – Badja

0

如果你指的是能够回去(因此这意味着你有一个导航堆栈),您可以访问它与具体的行为:

((Frame)Window.Current.Content).BackStack 

,你可以用它手动也发挥。

你可以传递参数给您的导航方法,并在您的导航到具有访问传递的参数(也许使用它们来加载不同的页面部分)

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var param = e.Parameter as SomeType; 
} 
+0

是的,我确实想回去,但我想我误解了我的帖子。基本上:在一个'.xaml'文件(和'.xaml.cs')中,我希望能够使用导航控件移动到不同的视图(页面?)。我想像用户界面一样,但内容变化? – Badja

+0

你的意思是只动态地改变内容(内容是一些与页面大纲无关的实际数据),但仍然能够使用前后功能? – kirotab

+0

种。在一个文件中,我希望它能显示数据(例如登录屏幕,当您登录时,它会将您带到启动页面,然后从那里您可以查看设置等),但所有文件都位于同一个xaml文件中 – Badja

0

你必须做很多的工作,但这是可能的,是的。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 

    <Grid x:Name="FirstContent" 
      Grid.Row="0"> 
     < ... whatever ... > 
    </Grid> 

    <Grid x:Name="SecondContent" 
      Grid.Row="0" 
      Visibility="Collapsed"> 
     < ... whatever ... > 
    </Grid> 

    <Grid x:Name="NavigationRow" 
      Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 

     < ... navigation controls down here ... > 
    </Grid> 

</Grid> 

通过与他们的Visibility性质(加动画)播放使用您在NavigationRow定义了FirstContentSecondContent(或任何你想要的)之间进行切换的控制元件。

现在至为什么你想这样做,我不知道。这是你在这里做的很多额外的工作。

相关问题