zoukankan      html  css  js  c++  java
  • 与众不同 windows phone (49)

    [源码下载]


    与众不同 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 += "选择了第一个按钮
    ";
                } 
                else if (result == ContentDialogResult.Secondary)
                {
                    lblMsg.Text += "选择了第二个按钮
    ";
                }
                else if (result == ContentDialogResult.None)
                {
                    lblMsg.Text += "没有选择按钮
    ";
                }
            }
    
            void dialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
            {
                lblMsg.Text += "点击了第一个按钮
    ";
            }
    
            void dialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
            {
                lblMsg.Text += "点击了第二个按钮
    ";
            }
    
    
            // 弹出自定义对话框
            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 += "选择了第一个按钮
    ";
                }
                else if (result == ContentDialogResult.Secondary)
                {
                    lblMsg.Text += "选择了第二个按钮
    ";
                }
                else if (result == ContentDialogResult.None)
                {
                    lblMsg.Text += "没有选择按钮
    ";
                }
            }
        }
    }

     
    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
    [源码下载]

  • 相关阅读:
    Linux 下的类似Windows下Everything的搜索工具
    windows和linux环境下制作U盘启动盘
    程序调试手段之gdb, vxworks shell
    LeetCode 1021. Remove Outermost Parentheses (删除最外层的括号)
    LeetCode 1047. Remove All Adjacent Duplicates In String (删除字符串中的所有相邻重复项)
    LeetCode 844. Backspace String Compare (比较含退格的字符串)
    LeetCode 860. Lemonade Change (柠檬水找零)
    LeetCode 1221. Split a String in Balanced Strings (分割平衡字符串)
    LeetCode 1046. Last Stone Weight (最后一块石头的重量 )
    LeetCode 746. Min Cost Climbing Stairs (使用最小花费爬楼梯)
  • 原文地址:https://www.cnblogs.com/webabcd/p/4233963.html
Copyright © 2011-2022 走看看