重新想象 Windows 8 Store Apps (9) - 控件之 ScrollViewer 基础
原文:重新想象 Windows 8 Store Apps (9) - 控件之 ScrollViewer 基础
作者:webabcd
介绍
重新想象 Windows 8 Store Apps 之 ScrollViewer
- 演示 ScrollViewer 的基本应用
- 演示 ScrollBar 的基本应用
- 演示 ScrollContentPresenter 的基本应用
示例
1、ScrollViewer 的基本应用
ScrollViewer/Demo.xaml
<Page
x:Class="XamlDemo.Controls.ScrollViewer.Demo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.ScrollViewer"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120 0 0 0"> <TextBlock Name="lblMsg" /> <!--
ScrollViewer - 滚动视图控件
Content - 滚动视图内的内容
IsDeferredScrollingEnabled - 是否启用延迟滚动,在滚动内容过多时,启用延迟混动可以改善性能,默认值为 false
HorizontalScrollMode - 水平滚动条的行为方式,Windows.UI.Xaml.Controls.ScrollMode枚举(Disabled, Enabled, Auto)
VerticalScrollMode - 垂直滚动条的行为方式
HorizontalScrollBarVisibility - 水平滚动条的可见性,Windows.UI.Xaml.Controls.ScrollBarVisibility枚举(Disabled, Auto, Hidden, Visible)
VerticalScrollBarVisibility - 垂直滚动条的可见性
ViewChanged - 发生滚动时所触发的事件
-->
<ScrollViewer Name="scrollViewer" Width="400" Height="400" Margin="0 10 0 0" HorizontalAlignment="Left"
IsDeferredScrollingEnabled="False"
ViewChanged="scrollViewer_ViewChanged_1"
HorizontalScrollMode="Enabled" VerticalScrollMode="Enabled"
HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
<ScrollViewer.Content>
<Image Source="/Assets/Logo.png" Width="1000" />
</ScrollViewer.Content>
</ScrollViewer> <StackPanel Orientation="Horizontal">
<!--使 ScrollViewer 里的内容滚动到相对于 ScrollViewer 居中-->
<Button Content="居中" Click="Button_Click_1" />
</StackPanel> </StackPanel>
</Grid>
</Page>
ScrollViewer/Demo.xaml.cs
/*
* ScrollViewer - 滚动视图控件
*
* 本例用于演示 ScrollViewer 的基本用法
*/ using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; namespace XamlDemo.Controls.ScrollViewer
{
public sealed partial class Demo : Page
{
public Demo()
{
this.InitializeComponent();
} private void scrollViewer_ViewChanged_1(object sender, ScrollViewerViewChangedEventArgs e)
{
lblMsg.Text = ""; /*
* ScrollViewer - 滚动视图控件
* ComputedHorizontalScrollBarVisibility - 当前水平滚动条的可见性,比如当 HorizontalScrollBarVisibility 设置为 Auton 时,可以通过 ComputedHorizontalScrollBarVisibility 来判断当前水平滚动条是否可见
* ComputedVerticalScrollBarVisibility - 当前垂直滚动条的可见性
* ExtentWidth - ScrollViewer 内的内容的宽
* ExtentHeight - ScrollViewer 内的内容的高
* ViewportWidth - 可视区的宽
* ViewportHeight - 可视区的高
* HorizontalOffset - 滚动内容的水平方向的偏移量
* VerticalOffset - 滚动内容的垂直方向的偏移量
* ScrollableWidth - 可滚动区域的水平方向的大小
* ScrollableHeight - 可滚动区域的垂直方向的大小
*
* ScrollToHorizontalOffset() - 滚动到指定的水平偏移位置
* ScrollToVerticalOffset() - 滚动到指定的垂直偏移位置
*/ lblMsg.Text += "ComputedHorizontalScrollBarVisibility: " + scrollViewer.ComputedHorizontalScrollBarVisibility;
lblMsg.Text += "\r\n";
lblMsg.Text += "ComputedVerticalScrollBarVisibility: " + scrollViewer.ComputedVerticalScrollBarVisibility;
lblMsg.Text += "\r\n";
lblMsg.Text += "ExtentWidth: " + scrollViewer.ExtentWidth;
lblMsg.Text += "\r\n";
lblMsg.Text += "ExtentHeight: " + scrollViewer.ExtentHeight;
lblMsg.Text += "\r\n";
lblMsg.Text += "ViewportWidth: " + scrollViewer.ViewportWidth;
lblMsg.Text += "\r\n";
lblMsg.Text += "ViewportHeight: " + scrollViewer.ViewportHeight;
lblMsg.Text += "\r\n";
lblMsg.Text += "HorizontalOffset: " + scrollViewer.HorizontalOffset;
lblMsg.Text += "\r\n";
lblMsg.Text += "VerticalOffset: " + scrollViewer.VerticalOffset;
lblMsg.Text += "\r\n";
lblMsg.Text += "ScrollableWidth: " + scrollViewer.ScrollableWidth;
lblMsg.Text += "\r\n";
lblMsg.Text += "ScrollableHeight: " + scrollViewer.ScrollableHeight;
lblMsg.Text += "\r\n";
} private void Button_Click_1(object sender, RoutedEventArgs e)
{
scrollViewer.ScrollToHorizontalOffset(scrollViewer.ScrollableWidth / );
scrollViewer.ScrollToVerticalOffset(scrollViewer.ScrollableHeight / );
}
}
}
2、ScrollBar 的基本应用
ScrollViewer/ScrollBarDemo.xaml
<Page
x:Class="XamlDemo.Controls.ScrollViewer.ScrollBarDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.ScrollViewer"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120,0,0,0"> <TextBlock Name="lblMsg" FontSize="14.667" HorizontalAlignment="Left" />
<ScrollViewer Name="scrollViewer" Width="400" Height="200" HorizontalAlignment="Left">
<Image Source="/Assets/Logo.png" Width="1000" />
</ScrollViewer> </StackPanel>
</Grid>
</Page>
ScrollViewer/ScrollBarDemo.xaml.cs
/*
* ScrollBar - 滚动条控件
*
* 本例通过访问 ScrollViewer 内的名为 VerticalScrollBar 的 ScrollBar 控件,来简要说明 ScrollBar 控件
*/ using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using XamlDemo.Common; namespace XamlDemo.Controls.ScrollViewer
{
public sealed partial class ScrollBarDemo : Page
{
public ScrollBarDemo()
{
this.InitializeComponent(); this.Loaded += ScrollBarDemo_Loaded;
} void ScrollBarDemo_Loaded(object sender, RoutedEventArgs e)
{
// 找到 ScrollViewer 内的名为 VerticalScrollBar 的 ScrollBar 控件,即 ScrollViewer 内的垂直滚动条
var scrollBar = Helper.GetVisualChild<ScrollBar>(scrollViewer, "VerticalScrollBar");
// ValueChanged - 当滚动条的值发生改变是所触发的事件
scrollBar.ValueChanged += scrollBar_ValueChanged;
} void scrollBar_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
// 显示垂直滚动条的当前值
lblMsg.Text = e.NewValue.ToString();
}
}
}
3、ScrollContentPresenter 的基本应用
ScrollViewer/ScrollContentPresenterDemo.xaml
<Page
x:Class="XamlDemo.Controls.ScrollViewer.ScrollContentPresenterDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls.ScrollViewer"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120 0 0 0"> <ScrollViewer Name="scrollViewer" Width="400" Height="400" Background="Blue" HorizontalAlignment="Left"
HorizontalScrollMode="Enabled" VerticalScrollMode="Enabled"
HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
<ScrollViewer.Content>
<Image Source="/Assets/Logo.png" Width="1000" />
</ScrollViewer.Content>
</ScrollViewer> </StackPanel>
</Grid>
</Page>
ScrollViewer/ScrollContentPresenterDemo.xaml.cs
/*
* ScrollContentPresenter - ScrollViewer 的内容呈现器(类似的有 ContentPresenter, ItemsPresenter)
*
* ScrollContentPresenter 用来呈现 ScrollViewer 的 Content
*/ using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using XamlDemo.Common; namespace XamlDemo.Controls.ScrollViewer
{
public sealed partial class ScrollContentPresenterDemo : Page
{
public ScrollContentPresenterDemo()
{
this.InitializeComponent(); this.Loaded += ScrollContentPresenterDemo_Loaded;
} void ScrollContentPresenterDemo_Loaded(object sender, RoutedEventArgs e)
{
// 找到 ScrollViewer 内的名为 ScrollContentPresenter 的 ScrollContentPresenter 控件
var scrollContentPresenter = Helper.GetVisualChild<ScrollContentPresenter>(scrollViewer, "ScrollContentPresenter"); scrollContentPresenter.Margin = new Thickness();
}
}
}
OK
[源码下载]
重新想象 Windows 8 Store Apps (9) - 控件之 ScrollViewer 基础的更多相关文章
- 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom
原文:重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom [源码下载] ...
- 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree
原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...
- 重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager
原文:重新想象 Windows 8 Store Apps (15) - 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState ...
- 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试
原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...
- 重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding
原文:重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding [源码下 ...
- 重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom
原文:重新想象 Windows 8 Store Apps (13) - 控件之 SemanticZoom [源码下载] 重新想象 Windows 8 Store Apps (13) - 控件之 Sem ...
- 重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示
原文:重新想象 Windows 8 Store Apps (12) - 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示 [源码下载] 重新想象 Windows 8 Store Ap ...
- 重新想象 Windows 8 Store Apps (11) - 控件之 ListView 和 GridView
原文:重新想象 Windows 8 Store Apps (11) - 控件之 ListView 和 GridView [源码下载] 重新想象 Windows 8 Store Apps (11) - ...
- 重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid
原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGr ...
随机推荐
- 与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信
原文:与众不同 windows phone (29) - Communication(通信)之与 OData 服务通信 [索引页][源码下载] 与众不同 windows phone (29) - Co ...
- 如何获取ul 中li选中的值点击button按钮跳转链接
<ul id="parent"> <li></li> <li></li> <li></li> & ...
- 定位vc运行时库问题 依赖问题,屡试不爽的一招
用vc 菜单 文件| 打开|指定EXE或DLL,如有指定运行时库,则PE文件的资源中可以看到manifest 配置节 然后据此判断EXE依赖的运行时库, 再根据编译选项调整 运行时库设置
- java学习笔记07--日期操作类
java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...
- Ubuntu 问题解决汇总
汇总一些ubuntu相关的问题 1.Ubuntu支持安装多媒体播放插件(新系统安装后必备) ubuntu-restricted-extras package allows users to insta ...
- Caché Monitor 2.03发布,Caché的SQL开发工具 - 开源中国社区
Caché Monitor 2.03发布,Caché的SQL开发工具 - 开源中国社区 Caché Monitor 2.03发布,Caché的SQL开发工具
- EF中的事务处理的初步理解
http://yanwushu.byethost7.com/?p=87 1. EF对事务进行了封装:context的saveChange()是有事务性的. 2. 依赖多个不同的Context的操作(即 ...
- Wix打包系列 (六)制作升级和补丁包
原文:Wix打包系列 (六)制作升级和补丁包 前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢? 在这之前,我 ...
- MBR格式无法识别2T以上的硬盘的问题
早上有人打电话说四块2T的sata 硬盘做了raid 5之后安装window server 2012的时候,无法创建分区,安装完系统后无法给剩余的硬盘创建分区,刚开始的时候我还以为是别人分区的数量问题 ...
- JVM指令集(指令码、助记符、功能描述)(转)
JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式: aconst_null 功能描述: null进栈. 指令 ...