从第二帧内导航一帧不起作用

时间:2016-01-06 00:02:09

标签: c# wpf xaml

我的主页有2帧。我可以从主页导航两个帧。我想在firstFrame中从页面导航我的secondFrame。代码运行正常,但框架无法导航。感谢。

MainPage.xaml中

<SplitView.Content>
          <Grid>
                 <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="Auto" />
                 </Grid.RowDefinitions>
                 <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="300" />
                 </Grid.ColumnDefinitions>

                 <Frame x:Name="firstFrame" HorizontalAlignment="Stretch" Grid.Row="0" Grid.Column="0" />
                 <Frame x:Name="secondFrame" Grid.Row="0" Grid.Column="1" BorderBrush="LightBlue" BorderThickness="1,0,0,0" />
          </Grid>
</SplitView.Content>

MainPage.xaml.cs中

public void setSecondFrame()
        {
            secondFrame.Navigate(typeof(Input));
        }

Calendar.xaml.cs

private void selectedDate_Click(object sender, RoutedEventArgs e)
        {            
                MainPage mp = new MainPage();
                mp.setSecondFrame();
        }

如果我在MainPage中调用它,它可以正常工作,但是当我从日历页面调用它时,它没有。

由于

1 个答案:

答案 0 :(得分:0)

问题是您致电new MainPage()。这将创建一个全新的页面,而不是使用现有的MainPage实例并使用您的单击处理程序来驱动它。

您可以选择不同的选项,您必须决定什么对您有用。

  1. 在mainpage.cs
  2. 中公开MainPage实例作为静态
  3. 导航时将MainPage(此指针)传递给每个框架
  4. 对这些想法的变化
  5. 为简单起见,也许#1最简单。

    在您的课程中,创建public static MainPage Instance {get; private set;}

    在MainPage()中,指定Instance = this;

    从您要使用MainPage的任何其他页面执行以下操作:

    App.MainPage.Instance.setSecondFrame()

    您可能需要根据您的确切项目设置/名称调整上述内容。