1.ScrollViewer使应用程序内容具有滚动功能。
2.XAML语法
<ScrollViewer...../>
<ScrollViewer>内容</ScrollViewer>
3.重要的属性:HorizontalScrollBarVisibility VerticalScrollBarVisibility
使内容可以水平滚动 垂直滚动
4.实例:使用计时器让图片可以在屏幕中滚动。
5.实现代码
<phone:PhoneApplicationPage
x:Class="PhoneApp1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot 是包含所有页面内容的根网格-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel 包含应用程序的名称和页标题-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="页面名称" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - 在此处放置其他内容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="124*" />
<ColumnDefinition Width="332*" />
</Grid.ColumnDefinitions>
<ScrollViewer Height="283" HorizontalAlignment="Left" Margin="15,87,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="424" HorizontalScrollBarVisibility="Hidden" Grid.ColumnSpan="2">
<StackPanel Height="902" Name="stackPanel1" Width="273" />
</ScrollViewer>
<Button Content="向上" Height="72" HorizontalAlignment="Left" Margin="34,410,0,0" Name="button1" VerticalAlignment="Top" Width="160" Click="button1_Click" Grid.ColumnSpan="2" />
<Button Content="停止" Height="72" HorizontalAlignment="Left" Margin="112,410,0,0" Name="button2" VerticalAlignment="Top" Width="160" Click="button2_Click" Grid.Column="1" />
</Grid>
</Grid>
<!--演示 ApplicationBar 用法的示例代码-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="按钮 1"/>
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="按钮 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="菜单项 1"/>
<shell:ApplicationBarMenuItem Text="菜单项 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
namespace PhoneApp1
{
public partial class MainPage : PhoneApplicationPage
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
// 构造函数
public MainPage()
{
InitializeComponent();
//设置计时器的间隔时间
dispatcherTimer.Interval = new TimeSpan(500);
//设置计时器的Tick方法,超过500之后调用这个方法
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
//添加图片到ScorollView里面的StackPanel中
for (int i = 0; i <4; i++)
{
//创建一个Image对象
Image imgItem = new Image();
//设置图片的宽度和高度
imgItem.Width = 200;
imgItem.Height = 200;
//4张图片循环添加到StackPanel的子节点上
if (i % 4 == 0)
{
//设置Image对象的Source属性,指定放入图片的位置
imgItem.Source = (new BitmapImage(new Uri("a.jpg", UriKind.Relative)));
}
else if (i % 4 == 1)
{
imgItem.Source = (new BitmapImage(new Uri("b.jpg", UriKind.Relative)));
}
else if (i % 4 == 2)
{
imgItem.Source = (new BitmapImage(new Uri("c.jpg", UriKind.Relative)));
}
else
{
imgItem.Source = (new BitmapImage(new Uri("d.jpg", UriKind.Relative)));
}
//向stackPanel中依次添加图片
this.stackPanel1.Children.Add(imgItem);
}
}
//超过时间间隔后调用的方法
void dispatcherTimer_Tick(object sender, EventArgs e)
{
//ScrollToVerticalOffset方法将内容垂直方向滚动
scrollViewer1.ScrollToVerticalOffset(scrollViewer1.VerticalOffset + 1);
}
//点击启动按钮的时候触发的方法,图片从上到下滚动
private void button1_Click(object sender, RoutedEventArgs e)
{
//开始计时器
dispatcherTimer.Start();
}
//点击停止按钮的时候触发的方法,图片停止
private void button2_Click(object sender, RoutedEventArgs e)
{
//停止计时器
dispatcherTimer.Stop();
}
}
}