zoukankan      html  css  js  c++  java
  • 重新想象 Windows 8.1 Store Apps (72)

    [源码下载]


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



    作者:webabcd


    介绍
    重新想象 Windows 8.1 Store Apps 之新增控件

    • AppBar - 应用程序栏控件(新增了 AppBarButton, AppBarToggleButton, AppBarSeparator)
    • CommandBar - 应用程序栏控件(AppBar 简化版)



    示例
    1、演示 AppBar 的应用
    AppBarDemo.xaml

    <Page
        x:Class="Windows81.Controls.AppBarDemo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Windows81.Controls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <CheckBox Name="chkIsCompact" Content="IsCompact" IsChecked="False" Checked="chkIsCompact_Checked" Unchecked="chkIsCompact_Unchecked" />
    
                <Button Name="btnOpen" Content="打开 AppBar" Click="btnOpen_Click" Margin="0 10 0 0" />
                <Button Name="btnClose" Content="关闭 AppBar" Click="btnClose_Click" Margin="0 10 0 0" />
                
            </StackPanel>
        </Grid>
    
        <!--
            AppBar 的 win8 时代的用法参见:http://www.cnblogs.com/webabcd/archive/2013/01/14/2859153.html
            其用法很怪异,到了 win8.1 时代终于正常了,以下会介绍 AppBar 在 win8.1 时代的用法
        
            在 win8.1 时代我们需要指定 AppBar 的按钮的图标和文本,系统会自动在图标外面加个圈圈
        -->
        <Page.BottomAppBar>
            <AppBar x:Name="appBar" IsSticky="True" Padding="10,0">
                <StackPanel Name="buttonPanel" Orientation="Horizontal" HorizontalAlignment="Left">
                     
                    <!--
                        AppBarButton - AppBar 中的 Button
                            Icon - 按钮的图标(可以指定一个图片,也可以指定一个 Symbol enumeration)
                            Label - 按钮的文本
                    -->
                    
                    <!--
                        Icon 来自 Symbol enumeration,参见本文件夹中的 Symbol enumeration (Windows).mht 文件
                    -->
                    <AppBarButton Icon="Play" Label="SymbolIcon" />
    
                    <!--
                        Icon 来自一个图片
                    -->
                    <AppBarButton Label="BitmapIcon" >
                        <AppBarButton.Icon>
                            <BitmapIcon UriSource="ms-appx:///Assets/Logo.png"/>
                        </AppBarButton.Icon>
                    </AppBarButton>
    
    
                    <!--
                        AppBarSeparator - AppBar 中的 分隔符
                    -->
                    <AppBarSeparator />
    
    
                    <!--
                        AppBarToggleButton - AppBar 中的 ToggleButton
                            Icon - 按钮的图标(可以指定为一个 FontIcon 或 PathIcon)
                            Label - 按钮的文本
                    -->
    
                    <!--
                        Icon 来自 FontIcon
                    -->
                    <AppBarToggleButton Label="FontIcon" >
                        <AppBarToggleButton.Icon>
                            <FontIcon FontFamily="Candara" Glyph="&#x03A3;"/>
                        </AppBarToggleButton.Icon>
                    </AppBarToggleButton>
    
                    <!--
                        Icon 来自 PathIcon
                    -->
                    <AppBarToggleButton Label="PathIcon" >
                        <AppBarToggleButton.Icon>
                            <PathIcon Data="F1 M 20,20L 24,10L 24,24L 5,24"/>
                        </AppBarToggleButton.Icon>
                    </AppBarToggleButton>
                    
                    <!--
                        AppBarButton, AppBarToggleButton, AppBarSeparator 有一个属性:IsCompact - 是否使用紧凑按钮,即是否隐藏按钮文本(true - 只显示按钮图标;false - 显示按钮图标和按钮文本)
                    -->
                    
                </StackPanel>
            </AppBar>
        </Page.BottomAppBar>
    </Page>

    AppBarDemo.xaml.cs

    /*
     * AppBar - 应用程序栏控件
     * win8.1 的 AppBar 相对于 win8 有了增强,即增加了对 AppBarButton, AppBarToggleButton, AppBarSeparator 的支持
     * 
     * 本例主要介绍 win8.1 中的 AppBar 改进的地方,原有 AppBar 的知识点参见:http://www.cnblogs.com/webabcd/archive/2013/01/14/2859153.html
     * 
     * 注:
     * 1、当应用程序栏只有 AppBarButton, AppBarToggleButton, AppBarSeparator 的时候建议使用 CommandBar
     * 2、如果除了 AppBarButton, AppBarToggleButton, AppBarSeparator 之外,应用程序栏还需要其他元素,则需要使用 AppBar
     */
    
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace Windows81.Controls
    {
        public sealed partial class AppBarDemo : Page
        {
            public AppBarDemo()
            {
                this.InitializeComponent();
            }
    
            private void btnOpen_Click(object sender, RoutedEventArgs e)
            {
                // 打开 AppBar
                appBar.IsOpen = true;
            }
    
            private void btnClose_Click(object sender, RoutedEventArgs e)
            {
                // 关闭 AppBar
                appBar.IsOpen = false;
            }
    
            private void chkIsCompact_Checked(object sender, RoutedEventArgs e)
            {
                var elements = buttonPanel.Children;
                foreach (var element in elements)
                {
                    var button = element as ICommandBarElement;
                    if (button != null)
                    {
                        // IsCompact - 是否使用紧凑按钮,即是否隐藏按钮文本(来自 ICommandBarElement 接口。AppBarButton, AppBarToggleButton, AppBarSeparator 均实现了此接口)
                        //     true - 只显示按钮图标(如果是 AppBarSeparator 的话会相对短一点)
                        //     false - 显示按钮图标和按钮文本(如果是 AppBarSeparator 的话会相对长一点)
                        button.IsCompact = true;
                    }
                }
            }
    
            private void chkIsCompact_Unchecked(object sender, RoutedEventArgs e)
            {
                var elements = buttonPanel.Children;
                foreach (var element in elements)
                {
                    var button = element as ICommandBarElement;
                    if (button != null)
                    {
                        button.IsCompact = false;
                    }
                }
            }
        }
    }


    2、演示 CommandBar 的应用
    CommandBarDemo.xaml

    <Page
        x:Class="Windows81.Controls.CommandBarDemo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Windows81.Controls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <Button Name="btnOpen" Content="打开 CommandBar" Click="btnOpen_Click" Margin="0 10 0 0" />
                <Button Name="btnClose" Content="关闭 CommandBar" Click="btnClose_Click" Margin="0 10 0 0" />
    
            </StackPanel>
        </Grid>
    
        <!--
            CommandBar 是 win8.1 新增的应用程序栏控件
            其内只能包含 AppBarButton, AppBarToggleButton, AppBarSeparator,详细用法参见 AppBarDemo.xaml
        
            AppBarButton, AppBarToggleButton, AppBarSeparator 有一个属性:IsCompact - 是否使用紧凑按钮,即是否隐藏按钮文本(true - 只显示按钮图标;false - 显示按钮图标和按钮文本)
            注:无法手动设置 CommandBar 中的 AppBarButton, AppBarToggleButton, AppBarSeparator 的 IsCompact 属性,系统会根据当前窗口的大小自动设置此属性
        -->
        <Page.BottomAppBar>
            <CommandBar x:Name="commandBar" IsSticky="True" Padding="10,0">
                <AppBarToggleButton Icon="Shuffle" Label="Shuffle" />
                <AppBarToggleButton Icon="RepeatAll" Label="Repeat" />
                <AppBarSeparator/>
                <AppBarButton Icon="Back" Label="Back" />
                <AppBarButton Icon="Stop" Label="Stop" />
                <AppBarButton Icon="Play" Label="Play" />
                <AppBarButton Icon="Forward" Label="Forward" />
    
                <!--
                    CommandBar.PrimaryCommands - 其内的按钮会显示在 CommandBar 的右侧
                    CommandBar.SecondaryCommands - 其内的按钮会显示在 CommandBar 的左侧
                
                    注:上面直接写在 CommandBar 中的按钮会自动添加进 CommandBar.PrimaryCommands
                -->
                <CommandBar.SecondaryCommands>
                    <AppBarButton Icon="Like" Label="Like" IsCompact="True" />
                    <AppBarButton Icon="Dislike" Label="Dislike" />
                </CommandBar.SecondaryCommands>
            </CommandBar>
        </Page.BottomAppBar>
    </Page>

    CommandBarDemo.xaml.cs

    /*
     * CommandBar - 应用程序栏控件(AppBar 简化版)
     *
     * 注:
     * 1、当应用程序栏只有 AppBarButton, AppBarToggleButton, AppBarSeparator 的时候建议使用 CommandBar
     * 2、如果除了 AppBarButton, AppBarToggleButton, AppBarSeparator 之外,应用程序栏还需要其他元素,则需要使用 AppBar
     */
    
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace Windows81.Controls
    {
        public sealed partial class CommandBarDemo : Page
        {
            public CommandBarDemo()
            {
                this.InitializeComponent();
            }
    
            private void btnOpen_Click(object sender, RoutedEventArgs e)
            {
                // 打开 CommandBar
                commandBar.IsOpen = true;
            }
    
            private void btnClose_Click(object sender, RoutedEventArgs e)
            {
                // 关闭 CommandBar
                commandBar.IsOpen = false;
            }
        }
    }



    OK
    [源码下载]

  • 相关阅读:
    理解java容器:iterator与collection,容器的起源
    【软件构造】-<笔记>-浅谈java中类的初始化过程
    CSAPP HITICS 大作业 hello's P2P by zsz
    2年经验,java后端必备技术点总结(脑图)
    手把手教,手写AVL树
    Redis源码分析-底层数据结构盘点
    验证mysql事务隔离级别机制加锁情况与MVCC机制
    Layui镜像站
    elasticsearch技术实战——第一篇(使用篇)
    【基础1】JniHelper静态函数和非静态函数的调用
  • 原文地址:https://www.cnblogs.com/webabcd/p/3708391.html
Copyright © 2011-2022 走看看