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

    [源码下载]


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



    作者:webabcd


    介绍
    与众不同 windows phone 8.1 之 新增控件

    • PickerFlyout - 选取器控件
    • ListPickerFlyout - 列表选取器控件



    示例
    1、演示 PickerFlyout 的应用
    PickerFlyoutDemo.xaml

    <Page
        x:Class="Demo.Control.PickerFlyoutDemo"
        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 Orientation="Vertical">
    
                <!--xaml 方式弹出选取器控件-->
                <Button Content="Show Picker" >
                    <Button.Flyout>
                        <PickerFlyout ConfirmationButtonsVisible="True" Confirmed="PickerFlyout_Confirmed" Closed="PickerFlyout_Closed">
                            <TextBlock Text="Xbox One集全方位娱乐及游戏大作于一身的综合娱乐设备,让您在各个区间轻松跳转.让您在游戏,娱乐及在线视频间轻松跳转" 
                                       FontSize="30" Margin="0 20 0 0" TextWrapping="Wrap" />
                        </PickerFlyout>
                    </Button.Flyout>
                </Button>
    
                <!--非 xaml 方式弹出选取器控件-->
                <Button Name="button" Content="Show Picker" Click="button_Click_1" Margin="0 10 0 0" />
    
                <TextBlock Name="lblMsg" Margin="0 10 0 0" />
    
            </StackPanel>
        </Grid>
    </Page>

    PickerFlyoutDemo.xaml.cs

    /*
     * PickerFlyout - 选取器控件(wp only)
     *     ConfirmationButtonsVisible - 是否显示按钮(一个确认按钮,一个取消按钮),不显示的话则只能通过“返回键”返回
     *     Content - 选取器控件显示的内容
     *     
     *     ShowAtAsync(FrameworkElement target) - 弹出选取器控件
     *     Hide() - 隐藏弹出框
     *     
     *     Confirmed - 点击确认按钮后触发的事件
     *     Opening, Opened, Closed - 几个顾名思义的事件
     */
    
    using System;
    using Windows.UI.Xaml.Controls;
    
    namespace Demo.Control
    {
        public sealed partial class PickerFlyoutDemo : Page
        {
            public PickerFlyoutDemo()
            {
                this.InitializeComponent();
            }
    
            private void PickerFlyout_Confirmed(PickerFlyout sender, PickerConfirmedEventArgs args)
            {
                lblMsg.Text += "confirmed";
                lblMsg.Text += Environment.NewLine;
            }
    
            // 通过 Confirmed 事件和 Closed 事件的结合,可以判断出用户是否点击了“取消”按钮或者按了“返回键”
            private void PickerFlyout_Closed(object sender, object e)
            {
                lblMsg.Text += "closed";
                lblMsg.Text += Environment.NewLine;
            }
    
            // 非 xaml 方式弹出选取器控件
            private async void button_Click_1(object sender, Windows.UI.Xaml.RoutedEventArgs e)
            {
                PickerFlyout flyout = new PickerFlyout();
                flyout.Content = new TextBlock { Text="????????????????????????" };
                bool result = await flyout.ShowAtAsync(button);
            }
        }
    }


    2、演示 ListPickerFlyout 的应用
    ListPickerFlyoutDemo.xaml

    <Page
        x:Class="Demo.Control.ListPickerFlyoutDemo"
        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 Orientation="Vertical">
    
                <!--
                    弹出简单的列表选取器控件
                        Title - 弹出框的标题
                        DisplayMemberPath - 需要显示的绑定对象中的指定字段
                        SelectedValuePath - 调用 SelectedValue 时,返回的是选中对象中的指定字段的值
                        ItemsPicked - 用户选中某一 item 后触发的事件
                -->
                <Button Content="Show ListPicker(simple)">
                    <Button.Flyout>
                        <ListPickerFlyout x:Name="listPickerFlyoutSimple" Title="请选择"
                                          DisplayMemberPath="Title" SelectedValuePath="Title"
                                          ItemsPicked="listPickerFlyoutSimple_ItemsPicked" Closed="listPickerFlyout_Closed">
                        </ListPickerFlyout>
                    </Button.Flyout>
                </Button>
    
                <!--
                    弹出单选列表选取器控件
                        Title - 弹出框的标题
                        SelectionMode - 选择模式(Single 或 Multiple)
                        ItemsPicked - 用户选中某一 item 后触发的事件
                -->
                <Button Content="Show ListPicker(single)" Margin="0 10 0 0">
                    <Button.Flyout>
                        <ListPickerFlyout x:Name="listPickerFlyoutSingle" Title="请选择" 
                                          SelectionMode="Single"
                                          ItemsPicked="listPickerFlyoutSingle_ItemsPicked" Closed="listPickerFlyout_Closed">
                            <ListPickerFlyout.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <Image Source="{Binding ImageUrl}" Width="20" Height="20" />
                                        <TextBlock Text="{Binding Title}" FontSize="20" Margin="10 0 0 0" />
                                    </StackPanel>
                                </DataTemplate>
                            </ListPickerFlyout.ItemTemplate>
                        </ListPickerFlyout>
                    </Button.Flyout>
                </Button>
    
                <!--
                    弹出多选列表选取器控件(有“完成”按钮和“取消”按钮)
                        Title - 弹出框的标题
                        SelectionMode - 选择模式(Single 或 Multiple)
                        ItemsPicked - 用户单击“完成”按钮后触发的事件
                -->
                <Button Content="Show ListPicker(multi)" Margin="0 10 0 0">
                    <Button.Flyout>
                        <ListPickerFlyout x:Name="listPickerFlyoutMulti" Title="请选择" 
                                          SelectionMode="Multiple"
                                          ItemsPicked="listPickerFlyoutMulti_ItemsPicked" Closed="listPickerFlyout_Closed">
                            <ListPickerFlyout.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <Image Source="{Binding ImageUrl}" Width="20" Height="20" />
                                        <TextBlock Text="{Binding Title}" FontSize="20" Margin="10 0 0 0" />
                                    </StackPanel>
                                </DataTemplate>
                            </ListPickerFlyout.ItemTemplate>
                        </ListPickerFlyout>
                    </Button.Flyout>
                </Button>
    
                <TextBlock Name="lblMsg" Margin="0 10 0 0" />
    
            </StackPanel>
        </Grid>
    </Page>

    ListPickerFlyoutDemo.xaml.cs

    /*
     * ListPickerFlyout - 列表选取器控件(wp only)
     *     ItemsSource - 数据源
     *     
     *     ShowAtAsync(FrameworkElement target) - 弹出列表选取器控件
     *     Hide() - 隐藏弹出框
     *     
     *     ItemsPicked - 用户选中列表中的项后触发的事件
     *     Opening, Opened, Closed - 几个顾名思义的事件
     */
    
    using System;
    using System.Collections.ObjectModel;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;
    
    namespace Demo.Control
    {
        public sealed partial class ListPickerFlyoutDemo : Page
        {
            private ObservableCollection<ItemModel> _items = new ObservableCollection<ItemModel>();
    
            public ListPickerFlyoutDemo()
            {
                this.InitializeComponent();
            }
    
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                // 构造并绑定数据
                for (int i = 0; i < 10; i++)
                {
                    _items.Add(new ItemModel()
                    {
                        Title = (i.ToString()),
                        ImageUrl = "/Assets/Kid.png"
                    });
                }
                listPickerFlyoutSimple.ItemsSource = _items;
                listPickerFlyoutSingle.ItemsSource = _items;
                listPickerFlyoutMulti.ItemsSource = _items;            
            }
    
            // 用户选中某一 item 后触发的事件
            private void listPickerFlyoutSimple_ItemsPicked(ListPickerFlyout sender, ItemsPickedEventArgs args)
            {
                lblMsg.Text += "selected value: " + sender.SelectedValue;
                lblMsg.Text += Environment.NewLine;
            }
    
            // 用户选中某一 item 后触发的事件
            private void listPickerFlyoutSingle_ItemsPicked(ListPickerFlyout sender, ItemsPickedEventArgs args)
            {
                lblMsg.Text += "selected title: " + ((ItemModel)sender.SelectedItem).Title;
                lblMsg.Text += Environment.NewLine;
            }
    
            // 用户单击“完成”按钮后触发的事件
            private void listPickerFlyoutMulti_ItemsPicked(ListPickerFlyout sender, ItemsPickedEventArgs args)
            {
                // 此次多选操作删除的 items
                foreach (var item in args.RemovedItems)
                {
                    lblMsg.Text += "removed item title: " + ((ItemModel)item).Title;
                    lblMsg.Text += Environment.NewLine;
                }
    
                // 此次多选操作新增的 items
                foreach (var item in args.AddedItems)
                {
                    lblMsg.Text += "added item title: " + ((ItemModel)item).Title;
                    lblMsg.Text += Environment.NewLine;
                }
            }
    
            // 通过 ItemsPicked 事件和 Closed 事件的结合,可以判断出用户是否点击了“取消”按钮或者按了“返回键”
            private void listPickerFlyout_Closed(object sender, object e)
            {
                lblMsg.Text += "closed";
                lblMsg.Text += Environment.NewLine;
            }
    
    
            class ItemModel
            {
                public string Title { get; set; }
                public string ImageUrl { get; set; }
            }
        }
    }



    OK
    [源码下载]

  • 相关阅读:
    《sql必知必会》笔记
    HTTP抓包与调试(Firefox插件)
    软件测试方法和技术实践(学习笔记)
    java基础(一章)
    java基础(二章)
    final关键字(最终的)
    算术运算符与控制台输入
    eclipse自动补全的设置
    Java关于Properties用法的总结(一)
    使用Struts2标签遍历集合
  • 原文地址:https://www.cnblogs.com/webabcd/p/4243567.html
Copyright © 2011-2022 走看看