我目前正在为树莓派(Windows IoT)构建一个应用程序,它接受 UDP 消息并将其显示在屏幕上。
我需要一种方法让文本自动在屏幕上水平滚动。我不能让用户单击按钮,因为没有输入设备连接到 Pi。
到目前为止,我一直在尝试使用滚动查看器并手动调整它的 HorizontalAlignment 值,但没有效果(我对整个 UWP/XAML 内容有点陌生)。
任何人都可以向我展示一些代码,这些代码可以使文本块中的文本自动从右向左滚动(就像文本在数字显示器上滚动的方式一样),并且不会中断应用程序中运行的任何其他代码(接收 udp 消息和滴答计时器)?
提前谢谢了。
您可以设置TextBlock
里面的一个ScrollViewer
那么它可以像这样滚动吗?
<ScrollViewer x:Name="scrollviewer" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Hidden"
VerticalScrollMode="Disabled" HorizontalScrollMode="Enabled" Grid.Row="1" Loaded="scrollViewer_Loaded"
Unloaded="scrollviewer_Unloaded">
<TextBlock Text="Start:111fdafdilgklnkghiogj2222213135aaaadjiosfuiafkhafuia464676541134564132145546afafkjarpikfsanjahfnvfnvjkhghga:End" TextWrapping="NoWrap"
FontSize="40" />
</ScrollViewer>
并在后面的代码中使用DispatcherTimer
设置滚动计时器,在Loaded event
of the ScrollViewer
启动这个计时器并在Unloaded event
of the ScrollViewer
停止这个计时器:
private void scrollViewer_Loaded(object sender, RoutedEventArgs e)
{
timer.Tick += (ss, ee) =>
{
if (timer.Interval.Ticks == 300)
{
//each time set the offset to scrollviewer.HorizontalOffset + 5
scrollviewer.ScrollToHorizontalOffset(scrollviewer.HorizontalOffset + 5);
//if the scrollviewer scrolls to the end, scroll it back to the start.
if (scrollviewer.HorizontalOffset == scrollviewer.ScrollableWidth)
scrollviewer.ScrollToHorizontalOffset(0);
}
};
timer.Interval = new TimeSpan(300);
timer.Start();
}
private void scrollviewer_Unloaded(object sender, RoutedEventArgs e)
{
timer.Stop();
}
注意到您的应用程序适用于树莓派,刚刚在 RP2、操作系统版本 10.0.14376.0 上测试了此代码,它工作正常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)