与众不同 windows phone (49) - 8.1 新增控件: 概述, ContentDialog, MapControl
作者:webabcd
介绍
与众不同 windows phone 8.1 之 新增控件
- 概述
- ContentDialog - 对话框控件
- MapControl - 又一个地图控件
示例
1、概述
Summary.xaml
<Page
x:Class="Demo.Control.Summary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Demo.Control"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid>
<StackPanel> <TextBlock TextWrapping="Wrap">
<Run>1、新建 wp 项目时,有了 silverlight 版 wp 和 windows 版 wp 的区别,抛弃 silverlight 吧,以后只会有 Windows Runtime Apps</Run>
<LineBreak />
<Run>2、本系列仅以 windows 版 wp 为例,所有之前写过的与 Windows Store Apps 相关的知识点都不会再写,关于 Windows Store Apps 的知识点请参见《重新想象 Windows 8 Store Apps 系列文章》</Run>
<LineBreak />
<Run>3、大多数控件都是 wp 和 windows 通用的,另外 wp 有一些自己独有的控件,后续会一一说明</Run>
</TextBlock> </StackPanel>
</Grid>
</Page>
2、演示对话框控件的应用
ContentDialogDemo/CustomContentDialog.xaml
<ContentDialog
x:Class="Demo.Control.ContentDialogDemo.CustomContentDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Demo.Control.ContentDialogDemo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Title="custom dialog title"
PrimaryButtonText="primary button"
SecondaryButtonText="secondary button"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
SecondaryButtonClick="ContentDialog_SecondaryButtonClick"> <!--以下为自定义对话框的标题-->
<ContentDialog.TitleTemplate>
<DataTemplate>
<TextBlock Text="custom dialog title" Foreground="Red" />
</DataTemplate>
</ContentDialog.TitleTemplate> <!--以下为自定义对话框的内容-->
<StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<TextBox Name="email" Header="Email address"/>
<PasswordBox Name="password" Header="Password"/>
<CheckBox Name="showPassword" Content="Show password"/> <TextBlock Name="body" Style="{StaticResource MessageDialogContentStyle}" TextWrapping="Wrap">
<TextBlock.Text>
content content content content content content content content content content content content content content
</TextBlock.Text>
</TextBlock>
</StackPanel> </ContentDialog>
ContentDialogDemo/CustomContentDialog.xaml.cs
/*
* 自定义 ContentDialog
*/ using Windows.UI.Xaml.Controls; namespace Demo.Control.ContentDialogDemo
{
public sealed partial class CustomContentDialog : ContentDialog
{
public CustomContentDialog()
{
this.InitializeComponent();
} private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
// 用户点击了第一个按钮(在对话框的调用者中通过 ContentDialogResult 获取用户的行为)
} private void ContentDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
// 用户点击了第二个按钮(在对话框的调用者中通过 ContentDialogResult 获取用户的行为)
}
}
}
ContentDialogDemo/Demo.xaml
<Page
x:Class="Demo.Control.ContentDialogDemo.Demo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Demo.Control.ContentDialogDemo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid>
<StackPanel> <Button Name="btnShowDialog" Content="弹出一个标准的对话框" Click="btnShowDialog_Click" /> <Button Name="btnShowCustomDialog" Content="弹出一个自定义的对话框" Click="btnShowCustomDialog_Click" Margin="0 10 0 0" /> <TextBlock Name="lblMsg" Margin="0 10 0 0" /> </StackPanel>
</Grid>
</Page>
ContentDialogDemo/Demo.xaml.cs
/*
* ContentDialog - 对话框控件(wp only)
* FullSizeDesired - 是否全屏弹出对话框
* Title, TitleTemplate - 对话框的标题(可以自定义样式)
* Content, ContentTemplate - 对话框的内容(可以自定义样式)
* PrimaryButtonText - 对话框第一个按钮显示的文本
* SecondaryButtonText - 对话框第二个按钮显示的文本
* PrimaryButtonCommand, PrimaryButtonCommandParameter, SecondaryButtonCommand, SecondaryButtonCommandParameter - 按钮命令及命令参数
*
* PrimaryButtonClick - 第一个按钮按下时触发的事件
* SecondaryButtonClick - 第二个按钮按下时触发的事件
* Closed, Closing, Opened - 顾名思义的一些事件
*
* ShowAsync() - 弹出对话框
* Hide() - 隐藏对话框
*
*
* 注意:自定义对话框参见 CustomContentDialog.xaml
*/ using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; namespace Demo.Control.ContentDialogDemo
{
public sealed partial class Demo : Page
{
public Demo()
{
this.InitializeComponent();
} private async void btnShowDialog_Click(object sender, RoutedEventArgs e)
{
ContentDialog dialog = new ContentDialog()
{
Title = "dialog title",
Content = "dialog content, dialog content, dialog content, dialog content, dialog content, dialog content, dialog content",
FullSizeDesired = true,
PrimaryButtonText = "PrimaryButton",
SecondaryButtonText = "SecondaryButton"
}; dialog.PrimaryButtonClick += dialog_PrimaryButtonClick;
dialog.SecondaryButtonClick += dialog_SecondaryButtonClick; // 弹出对话框,返回值为用户的选择结果
/*
* ContentDialogResult.Primary - 用户选择了第一个按钮
* ContentDialogResult.Secondary - 用户选择了第二个按钮
* ContentDialogResult.None - 用户没有选择(按了系统的“返回”按钮)
*/
ContentDialogResult result = await dialog.ShowAsync();
if (result == ContentDialogResult.Primary)
{
lblMsg.Text += "选择了第一个按钮\n";
}
else if (result == ContentDialogResult.Secondary)
{
lblMsg.Text += "选择了第二个按钮\n";
}
else if (result == ContentDialogResult.None)
{
lblMsg.Text += "没有选择按钮\n";
}
} void dialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
lblMsg.Text += "点击了第一个按钮\n";
} void dialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
lblMsg.Text += "点击了第二个按钮\n";
} // 弹出自定义对话框
async private void btnShowCustomDialog_Click(object sender, RoutedEventArgs e)
{
// 实例化自定义对话框
CustomContentDialog contentDialog = new CustomContentDialog(); // 弹出对话框,返回值为用户的选择结果
/*
* ContentDialogResult.Primary - 用户选择了第一个按钮
* ContentDialogResult.Secondary - 用户选择了第二个按钮
* ContentDialogResult.None - 用户没有选择(按了系统的“返回”按钮)
*/
ContentDialogResult result = await contentDialog.ShowAsync();
if (result == ContentDialogResult.Primary)
{
lblMsg.Text += "选择了第一个按钮\n";
}
else if (result == ContentDialogResult.Secondary)
{
lblMsg.Text += "选择了第二个按钮\n";
}
else if (result == ContentDialogResult.None)
{
lblMsg.Text += "没有选择按钮\n";
}
}
}
}
3、MapControl
MapControlDemo.xaml
<Page
x:Class="Demo.Control.MapControlDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Demo.Control"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps"> <Grid>
<StackPanel Orientation="Vertical"> <TextBlock TextWrapping="Wrap">
<Run>MapControl - 又一个地图控件(Windows.UI.Xaml.Controls.Maps.MapControl)</Run>
<LineBreak />
<Run>这个地图控件更灵活一些,其支持通过 tile 来显示地图,tile 的来源可以有三种,分别是:HttpMapTileDataSource, LocalMapTileDataSource, CustomMapTileDataSource</Run>
</TextBlock> </StackPanel>
</Grid>
</Page>
MapControlDemo.xaml.cs
/*
* MapControl - 又一个地图控件(Windows.UI.Xaml.Controls.Maps.MapControl)
*
* 这个地图控件更灵活一些,其支持通过 tile 来显示地图,tile 的来源可以有三种,分别是:HttpMapTileDataSource, LocalMapTileDataSource, CustomMapTileDataSource
*
*/ using Windows.UI.Xaml.Controls; namespace Demo.Control
{
public sealed partial class MapControlDemo : Page
{
public MapControlDemo()
{
this.InitializeComponent();
}
}
}
OK
[源码下载]
与众不同 windows phone (49) - 8.1 新增控件: 概述, ContentDialog, MapControl的更多相关文章
- 与众不同 windows phone (50) - 8.1 新增控件: PickerFlyout, ListPickerFlyout
[源码下载] 与众不同 windows phone (50) - 8.1 新增控件: PickerFlyout, ListPickerFlyout 作者:webabcd 介绍与众不同 windows ...
- 与众不同 windows phone (51) - 8.1 新增控件: DatePickerFlyout, TimePickerFlyout
[源码下载] 与众不同 windows phone (51) - 8.1 新增控件: DatePickerFlyout, TimePickerFlyout 作者:webabcd 介绍与众不同 wind ...
- 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom
[源码下载] 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom 作者:webab ...
- Windows 8.1 应用再出发 - 几种新增控件(1)
Windows 8.1 新增的一些控件,分别是:AppBar.CommandBar.DatePicker.TimePicker.Flyout.MenuFlyout.SettingsFlyout.Hub ...
- Windows 8.1 应用再出发 - 几种新增控件(2)
本篇我们接着来介绍Windows 8.1 的新增控件,分别是:Flyout.MenuFlyout.SettingsFlyout.Hub 和 Hyperlink. 1. Flyout Flyout被称为 ...
- Windows 8.1 应用再出发 (WinJS) - 几种新增控件(2)
上篇我们介绍了Windows 8.1 和 WinJS 中新增控件中的 AppBarCommand.BackButton.Hub.ItemContainer,本篇我们接着来介绍 NavBar.Repea ...
- 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar
[源码下载] 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker
[源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...
- 重新想象 Windows 8.1 Store Apps (74) - 新增控件: Flyout, MenuFlyout, SettingsFlyout
[源码下载] 重新想象 Windows 8.1 Store Apps (74) - 新增控件: Flyout, MenuFlyout, SettingsFlyout 作者:webabcd 介绍重新想象 ...
随机推荐
- Linux shell crontab expdp 定时任务逻辑备份 定时删除旧文件
点击进入:Window bat expdp 定时任务逻辑备份 定时删除N天前的旧文件 创建sh脚本 [oracle@localhost ~]$ vi logicbackup.sh 添加脚本内容 #!/ ...
- Android Screen Orientation Change (Screen Rotation) Example
原文见: http://techblogon.com/android-screen-orientation-change-rotation-example/#
- GitHub使用简单记录
根据<GotGitHub>[1]所做的一些整理 1. 浏览托管项目 在GitHub的页面中可以使用键盘快捷键 (1)按下问号(?)会在弹出窗口显示当前页面可用的快捷键. (2)在项目的代码 ...
- iOS 基础复习
silverlight知识点:linqToSQL.视图.存储过程.索引.触发器 数据结构:数组.栈.队列.链表.属.图. 排序算法:插入.选择.交换(冒泡).归并 网络开发:HTTP短连接.socke ...
- swift 类和结构体
1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
- wireshark解密本地https流量笔记
此方式支持firefox,chrome 建立path变量 SSLKEYLOGFILE=c:\ssl.key 重启firefox chrome,访问https网站会自动生成ssl session key ...
- cocos在win平台exe无法使用 UserDefault 解决方法
exe模拟器用来调度cocos本来是很方便的事情,但最近很多win10策划无法调用UserDefault.一直以为是权限问题,今天有空读一下码才发现.原来是cocos的bug.存在本地的UserDef ...
- [转]使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)
在android4.0以后的sdk里那个脚本就失效了,主要是因为 apkbuilder这个程序不见了: 人家sdk升级,我们的脚本也要跟上趟,修改一下喽. 上网一查,大家的文章还停留在我去年的脚本程度 ...
- mac 进程管理
1.前言 启用goagent.firefly等服务的时候,如果非正常退出,再次启动经常会遇到address already in use,端口被先前启动的服务进程所占用,导致服务无法使用.这种情况,可 ...
- javascript文件夹选择框的两种解决方案
javascript文件夹选择框的两种解决方案 解决方案1:调用windows 的shell,但会有安全问题. * browseFolder.js * 该文件定义了BrowseFolder()函数,它 ...