[Silverlight] 在Silverlight 中控制卷軸

2010/10/13

為什麼要控制卷軸 ?!
其實是因為一些滑動的效果的時候會用到..
所以會由自己來去控制卷軸…
下面是一個很簡單的範例..

我把垂直的卷軸顯示給藏起來…
然後透過..自訂的按鈕去控制卷軸往上還是往下…

先敘述一下畫面配置..
sshot-38
敘述一下.. stkpnlImage 是一個StackPanel 物件.. 因為有要卷軸效果..所以外面包覆了一個ScrollViewer
至於按鈕就是要控制向上還是向下…


看一下XAML Code :

<UserControl x:Class="StackPanelDemo1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="600" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White" Loaded="LayoutRoot_Loaded">
        <ScrollViewer Name="scrollViewer1"  VerticalScrollBarVisibility="Hidden" VerticalAlignment="Top" HorizontalAlignment="Left" Height="600" Width="251" Margin="0,0,148,0">
            <StackPanel Name="stkpnlImage"   />

        </ScrollViewer>
        <Button Content="往上" Height="23" HorizontalAlignment="Left" Margin="286,136,0,0" Name="btnUp" VerticalAlignment="Top" Width="75" FontSize="14" Click="btnUp_Click" />
        <Button Content="往下" FontSize="14" Height="23" HorizontalAlignment="Left" Margin="286,231,0,0" Name="btnDown" VerticalAlignment="Top" Width="75" Click="btnDown_Click" />
    </Grid>
</UserControl>


其中 我把scrollViewer1 的 VerticalScrollBarVisibility="Hidden" 這樣就不會出現卷軸..

一開始 因為 stkpnlImage  沒有東西 所以我們得先放一些假資料..
我在LayoutRoot 的 Loaded 中加入 LayoutRoot_Loaded 中寫放進30張圖片..
private void LayoutRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
          for(int i=0;i<=30;i++)
          {
              Image imgItem = new Image();
              imgItem.Width = 100;
              imgItem.Height = 100;
              //如果是雙數就放另外一張圖
              if(i%2==0)
              {
                  imgItem.Source = (new BitmapImage(new Uri("a.jpg", UriKind.Relative)));              
              }
              else
              {
                  imgItem.Source = (new BitmapImage(new Uri("b.jpg", UriKind.Relative)));
                 
              }
              this.stkpnlImage.Children.Add(imgItem);
          }
}


這樣執行起來就會有圖摟..^^

再來我在 btnUp 裡面的Click 事件 Code 如下..
private void btnUp_Click(object sender, System.Windows.RoutedEventArgs e)
{
            scrollViewer1.ScrollToVerticalOffset(scrollViewer1.VerticalOffset - 20);         

}



btnDown :

private void btnDown_Click(object sender, System.Windows.RoutedEventArgs e)
{
            scrollViewer1.ScrollToVerticalOffset(scrollViewer1.VerticalOffset+20);
}



重點就在於 你可以去呼叫 ScrollToVerticalOffset 這 method 來設定他垂直捲動的位置到哪..
我把他設定成為 現在的位置加上20 …
所以同理可證 ScrollToHorizontalOffset() 這可以去設定 水平的卷軸位置…

預覽:


檔案下載:

讚一下:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.