silverlight應用(一):ScrollViewer 文字滾動

屏幕上有一固定區域,不斷刷新即時信息,當文字超出顯示區域時,將自動滾動。重點是利用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();
        }  
	}
}

效果如下:


發佈了66 篇原創文章 · 獲贊 9 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章