屏幕上有一固定区域,不断刷新即时信息,当文字超出显示区域时,将自动滚动。重点是利用ScrollViewer的VerticalOffset,ScrollableHeight属性和ScrollToVerticalOffset方法。
一 前台silverlight代码
其中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,0" Name="textBlock1" Text="VerticalOffset:" VerticalAlignment="Top" Width="89" />
<TextBlock Name="VerticalOffset" Height="30" HorizontalAlignment="Left" Margin="475,64,0,0" Text="" VerticalAlignment="Top" Width="65" />
<TextBlock Height="21" HorizontalAlignment="Left" Margin="370,34,0,0" Name="textBlock2" Text="ScrollableHeight:" VerticalAlignment="Top" Width="99" />
<TextBlock Height="30" HorizontalAlignment="Left" Margin="475,25,0,0" Name="ScrollableHeight" Text="" VerticalAlignment="Top" Width="65" />
<Button Name="start" Content="开始滚动" Margin="94,241,0,194" HorizontalAlignment="Left" Width="83"></Button>
<Button Name="stop" Content="停止滚动" Margin="194,241,0,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();
}
}
}
效果如下: