几秒钟后,很快就可以从uwp中的另一个页面获取内容

时间:2017-03-28 10:05:33

标签: c# xaml uwp uwp-xaml

我有Page1.xaml

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel HorizontalAlignment="Left" Height="720" VerticalAlignment="Top" Width="575">

        <TextBlock Foreground="White" TextWrapping="Wrap" Margin="28,20,31,0" FontSize="14" Height="145">
            <TextBlock.Transitions>
                <TransitionCollection>
                    <EntranceThemeTransition FromHorizontalOffset="400"/>
                </TransitionCollection>
            </TextBlock.Transitions>
            <Run Text="Text 1"/>
        </TextBlock>
    </StackPanel>
</Grid>

和Page2.xaml

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <TextBlock Foreground="White SelectionChanged="TextBlock_SelectionChanged" 
Name="TextBlockOne">
        <TextBlock.Transitions>
            <TransitionCollection>
                <EntranceThemeTransition FromHorizontalOffset="400"/>
            </TransitionCollection>
        </TextBlock.Transitions>
        <Run Text="Text 2"/>
    </TextBlock>
</Grid>

我想要做的是替换&#34;文字1&#34;在第1页中,使用&#34;文本2&#34;来自第2页。

我在Page2.xaml.cs中试过这个:

private void TextBlock_SelectionChanged(object sender, RoutedEventArgs e)
    {
        var test = TextBlockOne.Text;
        Frame.Navigate(typeof(Page1), test);
    }

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您可以使用MainPage进行导航。

首先,MainPage有一个可以导航到Apage的Frame。

然后,MainPage启动一个可以等待5秒钟的Timer来调用MainPage导航到Bpage。

xaml中的代码,我在MainPage中写道

<Frame x:Name="frame"/>

xaml.cs中的代码

    public MainPage()
    {
        this.InitializeComponent();
        frame.Navigate(typeof(APage));
        DispatcherTimer t = new DispatcherTimer();
        t.Interval = new TimeSpan(1000);
        t.Tick += (s, e) =>
        {
            NavigatePageB();
        };
        t.Start();
    }

    private async void NavigatePageB()
    {
        await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
         () =>
         {
             frame.Navigate(typeof(PageB));
         });
    }

答案 1 :(得分:0)

 public MainPage()
{
     DispatcherTimer t = new DispatcherTimer();
     t.Interval = TimeSpan.FromSeconds(5);
     t.Tick += (s, e) =>
     {
         frame.Navigate(typeof(Page2));
         StopTimer();
     };
     t.Start();
}

 public void StopTimer()
 {
     t.Stop();
 }

Page2.xaml

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    TextBlock.Text = "My string";
}