如何在另一页上写入TextBlock
?到目前为止,它仅适用于同一页面上的TextBlocks
。async
功能位于Page_1
中。 TextBlock
在Page_2
上。
public async void Serial()
{
string rxBuffer;
//code
//code
//code
while (true)
{
textblock_DebugRx_Gas_live.Text = rxBuffer;
}
}
在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;
}
通常,页面一次显示一次,因此,如果要在导航期间在页面之间传递数据,则应使用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之类的框架都可以帮助您以更轻松的方式编写此类逻辑。