【Win 10应用开发】SplitView控件
SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所表示的为主要视图,而Pane属性设置的视图则可以隐藏,可以折叠和展开。
估计文字是不太容易介绍这个控件的,还是用实例来说明吧,老周平生最爱实例,最BS枯燥的理论的。
先看XAML代码:
<SplitView x:Name="splitView" OpenPaneLength="150" CompactPaneLength="45" PaneBackground="LightGray" DisplayMode="CompactOverlay">
<Image Stretch="Uniform" Source="{Binding ElementName=lvPrev,Path=SelectedItem.Uri}"/>
<SplitView.Pane>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Button BorderThickness="0" Grid.Row="1" Background="Transparent" Click="OnClick">
<Button.Content>
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="24" />
</Button.Content>
</Button>
<TextBlock Margin="10,0,0,0" VerticalAlignment="Center" FontSize="18" Text="选择图像"/>
</StackPanel>
<ListView x:Name="lvPrev" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Width="20" Height="20" Stretch="Uniform">
<Image.Source>
<BitmapImage UriSource="{Binding Uri}" DecodePixelWidth="20"/>
</Image.Source>
</Image>
<TextBlock Grid.Column="1" Text="{Binding Text}" VerticalAlignment="Center" Margin="15,0,0,0"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</SplitView.Pane>
</SplitView>
别看代码长,其实不复杂。由于SplitView的Content属性被声明为内容标记,因此<SplitView.Content>.....</SplitView.Content>这一层节点可以省略,所以,你就明白,只机是直接写在SplitView的开始和结束标记之间的,就是Content属性的内容。
上面例子中,SplitView控件的主体内容就是一个Image控件,待会儿我让它来显示图像,而至于显示哪一张图像,就通过ListView控件的SelectedItem来决定,所以就把Image.Source与SelectedItem属性绑定。
ListView中的项目我定义了一个类专门用于封装:
public class ViewItem
{
public string Text { get; set; }
public Uri Uri { get; set; }
}
Text表示一张图像的名称,Uri就是图像地址,为了绿色环保,要用到的图片我都放在项目里面,本地引用速度快一些。
然后在页面代码中生成一批ViewItem,并作为ListView的数据源。
ObservableCollection<ViewItem> m_items = null;
.........
m_items = new ObservableCollection<ViewItem>();
this.lvPrev.ItemsSource = m_items;
……………… protected override void OnNavigatedTo(NavigationEventArgs e)
{
m_items.Clear();
// 添加项列表
m_items.Add(new ViewItem { Text = "雪花", Uri = new Uri("ms-appx:///Assets/images/1.jpg") });
m_items.Add(new ViewItem { Text = "风筝", Uri = new Uri("ms-appx:///Assets/images/2.jpg") });
m_items.Add(new ViewItem { Text = "核桃", Uri = new Uri("ms-appx:///Assets/images/3.jpg") });
m_items.Add(new ViewItem { Text = "小溪", Uri = new Uri("ms-appx:///Assets/images/4.jpg") });
m_items.Add(new ViewItem { Text = "胡杨", Uri = new Uri("ms-appx:///Assets/images/5.jpg") });
m_items.Add(new ViewItem { Text = "红梅", Uri = new Uri("ms-appx:///Assets/images/6.jpg") });
}
所以,只要在ListView中选择一个图像,就会在Image中显示。但是,ListView不应该是主要视图,故把它放在SplitView.Pane中,这样它就可以折叠了。
下面再把重点回归到SplitView控件上。
<SplitView x:Name="splitView" OpenPaneLength="150" CompactPaneLength="45" PaneBackground="LightGray" DisplayMode="CompactOverlay">
……
OpenPaneLength:当Pane中的内容被展开后的宽度。
CompactPaneLength:当Pane的内容被折叠后的宽度。
PaneBackground:设置绘制Pane视图的背景的画刷。
DisplayMode:设置Pane区域的显示方式,主要有以下几个值。
Inline:内联,就是Pane中的内容与Content中的内容处于一个层上,当Pane展开时,Content的宽度会收缩。比如这样:

Overlay:表示Pane的内容覆盖在Content的内容之上。此时的Pane内容就像一个弹出层。而且,当你点击其他视图区域时,Pane的内容会隐藏。比如:

CompactInline:Pane内容与Content内容位于同一个层上,但Pane内容处于折叠状态,折叠后的宽度由CompactPaneLength属性来设置。比如这样:

CompactOverlay:Pane内容折叠,并浮动在Content内容上,即它们不在同一个层上,点击其他地方会使Pane隐藏。
示例界面上还有一个Button,点击它可以切换SplitView的状态。
private void OnClick(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
this.splitView.IsPaneOpen = !this.splitView.IsPaneOpen;
}
IsPaneOpen为true时,Pane内容展开;否则Pane内容折叠。
示例运行结果如下:

好好好,本文简单介绍了Win10应用中新增的SplitView控件。
示例下载:http://files.cnblogs.com/files/tcjiaan/MyApp.zip
【Win 10应用开发】SplitView控件的更多相关文章
- Windows Phone开发(10):常用控件(上)
原文:Windows Phone开发(10):常用控件(上) Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件.一般而言,如 ...
- 【Win 10应用开发】多窗口视图
Windows App一般情况下,同一时刻只能有一个应用程序实例在运行,为了在特殊需求下可以同时呈现不同的UI,SDK提供了多视图操作支持. 应用程序可以创建新的应用视图,以新的视图为基础可以呈现与主 ...
- 使用C#开发ActiveX控件(新)
前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...
- 使用C#开发ActiveX控件(新) 转 http://www.cnblogs.com/yilin/p/csharp-activex.html
前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...
- [转] 使用C#开发ActiveX控件
双魂人生 原文 使用C#开发ActiveX控件 ActiveX 是一个开放的集成平台,为开发人员.用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内 ...
- 使用C#开发ActiveX控件 11
C#开发ActiveX控件 ActiveX 是一个开放的集成平台,为开发人员.用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法. 使用 ...
- C#开发ActiveX控件
昨天写了篇博客<Winform 程序嵌入WPF程序 并发送消息>,没有说明为什么要嵌入WPF程序,那么今天就来唠叨唠叨其中的一个使用场景,开发ActiveX控件 首先,新建一个类库工程Hu ...
- 使用C#开发ActiveX控件
使用C#开发ActiveX控件(新) 前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动 ...
- Delphi 10 Seattle 小票打印控件TQ_Printer
TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用). TQ_Printrer控件让 ...
随机推荐
- 利用注解来保存uri
一直对getRequestURI()与getRequestURL()理解不透彻,因此今天通过查找资料,现将些许收获分享一下: [非原创]代码搬运工..(*^__^*) 1.request.getSch ...
- Python读取文件内容并将内容插入到SSDB中
import os import linecache import time from SSDB import SSDB ssdb = SSDB('127.0.0.1', 8888) print(&q ...
- margin:0 auto;不居中
margin:0 auto:不居中可能有以下两个的原因; 1.没有设置宽度<div style="margin:0 auto;"></div>看看上面的代码 ...
- bzoj2342还是马拉车
就好比第一次写主席树的时候写了30行,第二次写了5行 这次马拉车只剩下 ,id=,mx=;i<=n;i++) { -i],mx-i):;a[i-p[i]]==a[i+p[i]+];p[i]++) ...
- 【ORACLE】IN 后跟&参数字符串的处理方法
今天写尼日利亚BOSS,数据修复脚本时遇到一个问题, 参数字符串无法再IN中使用,例如:想要完成下面的查询 select * From customeren c where c.customercod ...
- asp.net两种方式的短信接口使用(提供接口的都是收费的)
一种是http请求的方式,另一种就是提供WebService接口供调用的. //服务商 sms.webchinese.cn //sms_url="http://sms.webchinese. ...
- weex append
append有两个值:其中的一个是tree, 另外一个是node. 不会像数据绑定一样对最后的渲染结果有影响.但它决定是否会影响整个节点的重绘还是只是某一个地方的内容会重绘. append=" ...
- 9_bootstrap less 移动端
chrome,firefox提供了"Device Emulation"功能,可模拟常见的各种浏览设备 android ADT或ios Xcode附带的设备模拟器,或第三方在线测试工 ...
- 李洪强iOS经典面试题153- 补充
李洪强iOS经典面试题153- 补充 补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...
- java web(六)多个请求对应一个Servlet
概要: 提交请求的常用方式有两种,get/post , 运行程序后被请求,在加载执行web.xml文件时通过该文件中的映射关系找到即将要执行的Servlet; 而在要执行的Servlet文件中可通过反 ...