将字符串写入C#,UWP中不同页面上的文本块

问题描述 投票:0回答:2

如何在另一页上写入TextBlock?到目前为止,它仅适用于同一页面上的TextBlocksasync功能位于Page_1中。 TextBlockPage_2上。

public async void Serial() 
{
   string rxBuffer;
   //code
   //code
   //code

   while (true)
   {
      textblock_DebugRx_Gas_live.Text = rxBuffer;    
   } 
} 
c# asynchronous uwp textblock
2个回答
0
投票

在C#,UWP中将字符串写入文本块的不同页面上

如果两页同时显示在前台,如下所示。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <StackPanel Margin="0,20,0,0" HorizontalAlignment="Center">
        <Button Click="Button_Click" Content="Click" />
        <TextBlock x:Name="Tbk" />
    </StackPanel>

    <Frame Grid.Row="1" VerticalAlignment="Center">
        <local:TestPage />
    </Frame>
</Grid>

您可以使用Messenger将邮件从原始页面发送到目标页面。

Messenger

目标页面

using GalaSoft.MvvmLight.Messaging;

private void Button_Click(object sender, RoutedEventArgs e)
{
    var message = "Test";
    Messenger.Default.Send<string,TestPage>(message);
    Tbk.Text = message;
}

0
投票

通常,页面一次显示一次,因此,如果要在导航期间在页面之间传递数据,则应使用public TestPage() { this.InitializeComponent(); this.Loaded += TestPage_Loaded; } private void TestPage_Loaded(object sender, RoutedEventArgs e) { Messenger.Default.Register<string>(this, (s) => { MyTextBlock.Text = s; }); } 方法的第二个参数:

Frame.Navigate

但是,更好的解决方案是使用某种MVVM框架,该框架具有基于ViewModels的导航服务,该服务的寿命比UI控件/页面的寿命更长。诸如MvvvmCross,MvvmLight,SimpleMvvm或Reactive UI之类的框架都可以帮助您以更轻松的方式编写此类逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.