屏幕上有一固定区域,不断刷新即时信息,当文字超出显示区域时,将自动滚动。重点是利用ScrollViewer的VerticalOffset,ScrollableHeight属性和ScrollToVerticalOffset方法。
其中VerticalScrollBarVisibility="Hidden"用于将竖直滚动条隐藏。
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="SilverlightApplication1.MainPage" Width="640" Height="480"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <Storyboard x:Name="board" Completed="board_Completed" BeginTime="0:0:1"/> </Grid.Resources> <ScrollViewer Name="TestScrollViewer" VerticalScrollBarVisibility="Hidden" Margin="94,29,300,263"> <TextBlock Name="txt" textwrapping="Wrap" ></TextBlock> </ScrollViewer> <TextBlock Height="21" HorizontalAlignment="Left" Margin="371,68,0" Name="textBlock1" Text="VerticalOffset:" VerticalAlignment="Top" Width="89" /> <TextBlock Name="VerticalOffset" Height="30" HorizontalAlignment="Left" Margin="475,64,0" Text="" VerticalAlignment="Top" Width="65" /> <TextBlock Height="21" HorizontalAlignment="Left" Margin="370,34,0" Name="textBlock2" Text="ScrollableHeight:" VerticalAlignment="Top" Width="99" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="475,25,0" Name="ScrollableHeight" Text="" VerticalAlignment="Top" Width="65" /> <Button Name="start" Content="开始滚动" Margin="94,241,194" HorizontalAlignment="Left" Width="83"></Button> <Button Name="stop" Content="停止滚动" Margin="194,194" HorizontalAlignment="Left" Width="83" /> </Grid> </UserControl>
二 后台C#代码
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightApplication1 { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); start.Click += new RoutedEventHandler(startButton_Click); stop.Click += new RoutedEventHandler(stopButton_Click); txt.Text = "IP是现代IC设计行业中越来越受重视的核心技术。当今的芯片复杂程度越来 越高,甚至可包含整个系统的功能。如此复杂的SOC(System-on-a-Chip) 产品是由 许许多多的功能模块所组成,包括有cpu内核、DSP内核,以及各种各样的外部 总线接口内核,如PCI/X、PCI-Express、USB、I2C或Ethernet等接口内核。一个 SOC芯片通常只有一、两个cpu或DSP内核,但却可能包含众多的各类总线接口 内核。这些内核若全靠各个设计公司自己开发,不仅耗时耗人工,而且对产品的 核心功能没有任何增值。如果IC设计用户选用了优质的IP产品,不仅可以省去他们自己开发这些内核 所需花费的人力物力,而且省去了仿真和调试这些内核代码所耗费的大量宝贵时 间。调查发现,IC设计公司花费在仿真和调试RTL代码的时间占到其整个产品设计 周期的三分之二以上。若能减去这不必要的仿真和调试周期,不仅可使设计产品 早日进入市场,而且可以省去大量研发开销。"; } void startButton_Click(object sender,RoutedEventArgs e) { board.Begin(); } private void board_Completed(object sender,EventArgs e) { //取得滚动条滚动的位置 double size = TestScrollViewer.VerticalOffset; VerticalOffset.Text = size.ToString(); ScrollableHeight.Text = TestScrollViewer.ScrollableHeight.ToString(); if (TestScrollViewer.VerticalOffset >= TestScrollViewer.ScrollableHeight) { TestScrollViewer.ScrollToVerticalOffset(0); } else { TestScrollViewer.ScrollToVerticalOffset((size+6)); } board.Begin(); } private void stopButton_Click(object sender,RoutedEventArgs e) { board.Stop(); } } }
效果如下:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。