[源码下载]

与众不同 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的更多相关文章

  1. 与众不同 windows phone (50) - 8.1 新增控件: PickerFlyout, ListPickerFlyout

    [源码下载] 与众不同 windows phone (50) - 8.1 新增控件: PickerFlyout, ListPickerFlyout 作者:webabcd 介绍与众不同 windows ...

  2. 与众不同 windows phone (51) - 8.1 新增控件: DatePickerFlyout, TimePickerFlyout

    [源码下载] 与众不同 windows phone (51) - 8.1 新增控件: DatePickerFlyout, TimePickerFlyout 作者:webabcd 介绍与众不同 wind ...

  3. 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom

    [源码下载] 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom 作者:webab ...

  4. Windows 8.1 应用再出发 - 几种新增控件(1)

    Windows 8.1 新增的一些控件,分别是:AppBar.CommandBar.DatePicker.TimePicker.Flyout.MenuFlyout.SettingsFlyout.Hub ...

  5. Windows 8.1 应用再出发 - 几种新增控件(2)

    本篇我们接着来介绍Windows 8.1 的新增控件,分别是:Flyout.MenuFlyout.SettingsFlyout.Hub 和 Hyperlink. 1. Flyout Flyout被称为 ...

  6. Windows 8.1 应用再出发 (WinJS) - 几种新增控件(2)

    上篇我们介绍了Windows 8.1 和 WinJS 中新增控件中的 AppBarCommand.BackButton.Hub.ItemContainer,本篇我们接着来介绍 NavBar.Repea ...

  7. 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar

    [源码下载] 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...

  8. 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker

    [源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...

  9. 重新想象 Windows 8.1 Store Apps (74) - 新增控件: Flyout, MenuFlyout, SettingsFlyout

    [源码下载] 重新想象 Windows 8.1 Store Apps (74) - 新增控件: Flyout, MenuFlyout, SettingsFlyout 作者:webabcd 介绍重新想象 ...

随机推荐

  1. Lua截取utf-8编码的中英文混合字符串

    参考博客:UTF8字符串在lua的截取和字数统计[转载] 需求 按字面个数来截取子字符串 函数(字符串, 开始位置, 截取长度) utf8sub(,) = 好1世界哈 utf8sub(,) = 你好1 ...

  2. 【转载】怎样使用ZEMAX导出高质量的图像动画

    Zemax 导出高质量图片与动画 (2013-08-13 11:01:51) http://blog.sina.com.cn/s/blog_628dd2bc0101dycu.html 转载▼ How ...

  3. 2015.10.14-TransactionScope测试

    测试代码: ; ; List<string> lst = null; Action doSth = () => { using (var db = new TestSystemEnt ...

  4. struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组

    在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...

  5. JVM 参数翻译汉化解释

    博客搬家,新地址:http://www.zicheng.net/article/38.htm Behavioral Options(行为参数) Option and Default Value Des ...

  6. Etl之HiveSql调优(union all)

    相信在Etl的过程中不可避免的实用union all来拼装数据,那么这就涉及到是否并行处理的问题了. 在hive中是否适用并行map,可以通过参数来设定: set hive.exec.parallel ...

  7. HMM MEMM & label bias

    (http://blog.csdn.net/xum2008/article/details/38147425) 隐马尔科夫模型(HMM): 图1. 隐马尔科夫模型 隐马尔科夫模型的缺点: 1.HMM只 ...

  8. 同时使用Twitter nlp 和stanford parser的解决方法

    因为Twitter nlp中使用了较老版本的stanford parser,导致不能同时使用 解决方法是使用未集成其它jar包的Twitter nlp,关于这点Stanford FAQ中也有说明(在F ...

  9. 对象与Byte数组相互转化工具方法

    /** * 对象转byte * @param obj * @return */ private byte[] ObjectToByte(Object obj) { byte[] bytes = nul ...

  10. 玩转MAC OS!实测DIY兼容机装苹果系统

    1打造iMAC:DIY常规兼容机安装MAC OS回顶部 [PConline 评测]最近消息透露苹果下个月即将发布新系统MAC OS X 10.9,这是什么东西?对于苹果,留给我们印象最为深刻的是iPh ...