我目前正在为树莓派(Windows IoT)构建一个应用程序,该应用程序接受UDP消息并将其显示在屏幕上。
我需要一种使文本自动在屏幕上水平滚动的方法。我不能让用户单击按钮,因为没有输入设备连接到Pi。
到目前为止,我一直在使用scrollviewer并手动调整其HorizontalAlignment值,但无济于事(我是整个UWP / XAML的新手)。
谁能给我看一些代码,该代码可以使文本块中的文本自动从右向左滚动(这与文本在数字显示器上的滚动方式非常相似)不会中断应用程序中运行的任何其他代码(接收udp消息和滴答计时器)?
提前谢谢了。
您可以设置a的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
的ScrollViewer
启动定时器,并在Unloaded event
该的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,它正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句