zoukankan      html  css  js  c++  java
  • win8开发-Xaml学习笔记四

    13.AppBar

    //当手势向上或者鼠标右键的时候,会显示AppBar,AppBar分为顶部TopAppBar、底部BottonAppBar两块,建议把主要操作放到底部,顶部有特殊意义再放(比如IE)。

    eg:Xaml中Page的TopAppBar、BottonAppBar两个属性赋值AppBar类型(style),然后Content内容自由绘制,一般绘制横向的图型图标,一般采用StandardStyles.xaml中预置的

    顶部TopAppBar

     <Page.TopAppBar>
            <AppBar>
                <AppBar.Content>//<!--这句可以省略不写-->
                    <StackPanel Orientation="Horizontal">
                        //<!--以下是音乐播放按钮图标-->
                        <Button Style="{StaticResource PlayAppBarButtonStyle}" AutomationProperties.Name="播放"></Button>
                        //<!-- AutomationProperties.Name将默认play按钮改为“播放”-->
                        <Button Style="{StaticResource EditAppBarButtonStyle}" AutomationProperties.Name="编辑"></Button>
                        //<!--style—到common文件夹下的standardStyles中查找,并别忘记把它们从注释中拿出来启用-->
                    </StackPanel>
                </AppBar.Content>                          
            </AppBar>
        </Page.TopAppBar>

    底部BottonAppBar

    <Page.BottomAppBar>
            <AppBar>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="地址"></TextBlock>
                    <TextBlock Width="500"></TextBlock>
                    <Button>转到</Button>
                </StackPanel>
            </AppBar>
        </Page.BottomAppBar>

     PS:总算找到这个按钮了  Style="{StaticResource BackButtonStyle}"

    <Button Content="Button" HorizontalAlignment="Left" Height="78" Margin="103,166,0,0" VerticalAlignment="Top" Width="148" Style="{StaticResource BackButtonStyle}"/>

     #高级:IsOpen打开状态(可以实现程序打开时默认AppBar显示);IsSticky是否盯住;Opened、Closed打开关闭事件

     <Page.BottomAppBar>
            <AppBar IsOpen="True">

     14.其他常用控件

    1)ProgressBar

    <ProgressBar HorizontalAlignment="Left" Height="41" Margin="93,169,0,0" VerticalAlignment="Top" Width="398" Value="30" IsIndeterminate="True"/>
              //IsIndeterminate="True"显示一直处于类似缓冲状态,表示正在进行

    IsIndeterminate="True"时: 

    2)ProgressRing

     <ProgressRing HorizontalAlignment="Left" Height="83" Margin="93,390,0,0" VerticalAlignment="Top" Width="240" IsActive="True"/> //<!--IsActive="True"需要启动它,才会显示效果-->

    3)ToggleSwitch

     <ToggleSwitch Header="ToggleSwitch" HorizontalAlignment="Left" Height="75" Margin="85,240,0,0" VerticalAlignment="Top" Width="102"/>
            <!--开关控件,IsOn是否打开,OffContent/OnContent/Heade/关闭/打开/头部的显示内容;Toggled更改事件-->

    4)ScrollViewer

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Left" Height="189" Margin="322,204,0,0" VerticalAlignment="Top" Width="295">
                //<!--ScrollViewer默认只有纵向滚动条,通过设置Horizontal(Vertical)ScrollBarVisibility改变滚动条属性-->
                <Image Source="image/1b.jpg" Width="800" Height="800"></Image>
            </ScrollViewer>

     15.异步编程

    *异步方法不用等任务结束后才返回.异步编程可以避免界面卡死的问题,但是会导致编写"等待一个异步操作执行完成再执行一段代码"的程序很麻烦

    *异步方法返回Task或者IAsyncOperation对象(鼠标悬停会显示"可等待"),一般以Async结尾,异步方法不会等结束才返回.

    *在.net4.5中引入了async/await关键字,可以在异步方法调用前加入await关键字,这样方法中这一行之后的代码都将在异步方法执行完成后才执行.注意:一个方法中如果有await,则必须标注为async.

    *可以直接在await前声明变量,当异步方法执行完成后把执行结果返回设置给变量,一般用var自动推断.

    *WinRT中所有执行时间可能会较长操作(一般是IO操作)都被设置为异步方法.

    //方法中如果有一个地方用到了await,则方法需要标注为async
            private  async void Button_Click_1(object sender, RoutedEventArgs e)
            {
                MessageDialog msgDlg = new MessageDialog("Hello!");
                msgDlg.Commands.Add(new UICommand("yes"));
                msgDlg.Commands.Add(new UICommand("no"));
                var result = await msgDlg.ShowAsync();
                //一般异步方法都是以Async结尾,异步方法都可以使用await编程“好像同步”
                //异步执行结束后才继续详细执行
    
                //var info = msgDlg.ShowAsync();
                //info.Completed = (a1, a2) =>
                //{
                //    string cmd = a1.GetResults().Label;
                //};
            }

     MessageDialog

    MessageDialog msgDlg = new MessageDialog("是否删除?");
                msgDlg.Commands.Add(new UICommand("") {Id=1});
                msgDlg.Commands.Add(new UICommand("") { Id = 2});
                var result = await msgDlg.ShowAsync();
                if ((int)result.Id == 1)
                { 
                    //
                }
                else if ((int)result.Id == 2)
                { 
                }
  • 相关阅读:
    Mysql蠕虫复制
    Mysql中如何开启慢查询功能?
    线程的状态以及状态切换
    Java的Unsafe类
    Spring 获取jar内外文件的方式
    RocketMQ学习
    volatile的理解
    快速排序
    JVM的发展史
    nginx安装配置
  • 原文地址:https://www.cnblogs.com/satchmo/p/3159538.html
Copyright © 2011-2022 走看看