silverlight应用(一):ScrollViewer 文字滚动

来源:互联网 发布:淘宝店铺头像制作logo 编辑:程序博客网 时间:2024/06/10 02:05

屏幕上有一固定区域,不断刷新即时信息,当文字超出显示区域时,将自动滚动。重点是利用ScrollViewer的VerticalOffset,ScrollableHeight属性和ScrollToVerticalOffset方法。

一 前台silverlight代码

其中VerticalScrollBarVisibility="Hidden"用于将竖直滚动条隐藏。

<UserControlxmlns="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();        }  }}

效果如下: