Windows App开发之应用布局与基本导航

简单演示样例看页面布局和导航

首先依照上一篇博客中的顺序来新建一个项目。新建好之后就点开MainPage.xaml開始写程序了。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="100"/>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="4*"/>
            <ColumnDefinition Width="6*"/>
        </Grid.ColumnDefinitions>

        <StackPanel Grid.Row="0" Grid.ColumnSpan="2" Orientation="Horizontal">
            <TextBlock Text="页面布局" Foreground="Red" FontSize="40" Margin="12"
                     Width="200" Height="80" />
            <TextBlock Text="基本导航" Foreground="Green" FontSize="40" Margin="12"
                       Width="200" Height="80"  />
        </StackPanel>

        <Grid Grid.Row="1" Grid.Column="0">
            <Button Content="导航到第二页" Foreground="Blue" FontSize="35"
                   Margin="12,480,0,0" Name="btnGoSecondPage" Click="btnGoSecondPage_Click"/>
        </Grid>

        <Canvas Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center">
             <Rectangle Fill="Blue"/>
             <Rectangle Fill="Yellow" Height="100" Width="100" Canvas.Left="50" Canvas.Top="20"/>
             <Rectangle Fill="White" Height="100" Width="100" Canvas.Left="70" Canvas.Top="90"/>
        </Canvas>

    </Grid>

以下就来依次介绍上面这段代码究竟做了写什么。

1)首先将最外围的Grid控件分成了3行2列。当中第一行的高度是100像素。第二行的高度是自己主动的。所谓自己主动呢,就是会依据将来在当中加入的控件的所占的高度来决定的;第三行的高度就是剩余的啦,这么说可能不够清楚究竟星号是什么意思。那再看看切成的这两列就好啦。它的宽度比就是4:6。

非常显然不一定是非得比例加起来等于10,即便是4:100也能够的。

2)在最外层的Grid内嵌套了一个StackPanel,而且将其定位在第一行,而且横跨2列。

Grid最擅长的就是操作详细的像素,它能够将不论什么控件精确的定位到不论什么一点。而StackPanel最重要的Orientation属性则能够安排其内的控件的排列方式,比方这里就是让两个TextBlock控件按水平方向来排列。

3)在这里又嵌套了Grid,里面有一个Button。Foreground属性是定义字体颜色。FontSize属性是定义字体大小。以下重点来看看Margin属性。

我们定义的Marin=”12,480,0,0”,从左至右依次是左、上、右和下四个方向距离外围边框的距离。

在设计器中已经标注了左边距是12。而上边距没有体现出来。但确实是480。

还记得之前的那个auto么,在这里就体现出来了啦。由于下边距是0,所以Grid的切割线就刚好在Button以下啦。但为什么右边的切割线不刚好在Button的右边呢。这是由于我们之前的2列是依照4:6的比例来切的呀。而不是设置的auto。

4)Canvas位于其外围的Grid控件的正中央,HorizontalAligment和VerticalAlignment分别表示水平方向和垂直方向的摆放位置。Canvas.Top和Canvas.Left分别表示离Canvas最上边和最下边的距离。

5)给Button设置一个名字。然后敲下Click=”“之后,就会出现例如以下图所看到的。这是直接按下Enter键就能够直接命名咯。

小技巧啦。

然后双击Click事件的名字后,直接按F12键就会自己主动生成一个事件而且跳转到C#文件啦。以下这段代码就是会让页面从MainPage跳转到SecondPage。

private void btnGoSecondPage_Click(object sender, RoutedEventArgs e)
{
  if (this.Frame != null)
  {
     this.Frame.Navigate(typeof(SecondPage));
  }
}

写完这段代码也先别急着调试,由于还没有创建SecondPage呢。建议创建好之后最好再往里面加点东西。不然跳转过去了就是黑茫茫的一片还以为是出Bug了呢,加入一个主要的TextBlock就能够了。

   <TextBlock Text="Second Page" FontSize=" 50"/>

我再来简介一下VS中经常使用的一些东西,仅仅面向刚開始学习的人。在以下的图中,方框1处能够让设计器和XAML代码的位置对换哦。截图里我就是将设计器放到了右边,只是仅仅是为了截图,设计器还是在左边比較习惯。

方框2处能够让设计器和XAML代码上下摆列和左右摆列也能够不显示它们中的某一个。

旁边还能够设置网格对齐以及设计器的缩放比例。

方框3和方框4中能够设置的东西就太多啦,能够设置渐变色。也能够设置Click事件。还能够设置控件的布局等。

应用栏布局

Windows上的modern应用我倒是不经常使用。只是WP8上的应用我认为和安卓什么的最大的差别就是它的应用栏了,以下就来讲讲应用栏是怎么做出来的。

在Document Outline(在视图中找到。或者按Ctrl+W。U)中有TopAppBar和BottomAppBar,各自是顶部和底部的应用栏。点鼠标右键能够高速定义AppBar和CommandBar。通常将AppBar放在应用上端也就是TopAppBar内,CommandBar放在下端也就是BottomAppBar内。

也许非常多人都不知道,在Modern应用下,按Win+Z键能够直接呼出应用栏哟。另外要注意AppBar与CommandBar不同,前者仅仅能包括一条子内容,通常定义一个Grid控件,然后在Grid内嵌套其它控件。以下贴出一段AppBar的演示样例:

<Page.TopAppBar>
  <AppBar IsSticky="True">
     <Grid>
       <Grid.ColumnDefinitions>
          <ColumnDefinition/>
          <ColumnDefinition/>
       </Grid.ColumnDefinitions>
       <StackPanel Orientation="Horizontal">
          <Button Content="Main Page" Width="140" Height="80" Click="AppBarButton1_Click"/>
          <Button Content="Second Page" Width="140" Height="80" Click="AppBarButton2_Click"/>
          <Button Content="Third Page" Width="140" Height="80" Click="AppBarButton3_Click"/>
          <TextBlock Text="AppBar" Foreground="Red" FontSize="40" VerticalAlignment="Center" Margin="12" Width="200"/>
       </StackPanel>
       <SearchBox Grid.Column="1" Width="300" Height="50" HorizontalAlignment="Right"/>
    </Grid>
  </AppBar>
</Page.TopAppBar>

<Page.BottomAppBar>
    <CommandBar>
       <AppBarButton Label="Refresh" Icon="Refresh"
           Click="appBarBtn4_Click"/>
       <AppBarButton Label="Redo" Icon="Redo"
           Click="appBarBtn5_Click"/>
       <CommandBar.SecondaryCommands>
          <AppBarButton Label="Add" Icon="Add" Click="AppBarButton6_Click"/>
          <AppBarButton Label="Delete" Icon="Delete" Click="AppBarButton7_Click"/>
          <AppBarButton Label="Edit" Icon="Edit" Click="AppBarButton8_Click"/>
       </CommandBar.SecondaryCommands>
   </CommandBar>
</Page.BottomAppBar>

可是大家应该都发现了。默认情况下应用栏是隐藏起来的,假设想要在载入的时候就是启动的,那该怎么办呢?非常easy。直接在AppBar定义IsOpen属性为真就好。

<CommandBar IsOpen="True">
    <!-- -->
</CommandBar>

另外还有粘滞属性哟。也就是说。原本当用右键呼出应用栏后,再用左键等点一下其它位置应用栏就会自己消失啦,但假设IsSticky属性为真的话呢,非得再多按几下右键才会消失的。

<AppBar IsSticky="True">
    <!-- -->
</AppBar>

除了在XAML中定义这些属性外,我们也能够在后台代码中用函数来实现呢,这里我就是用的2个Button的Click事件。

private void btnSetAppBar_Click(object sender, RoutedEventArgs e)
{
   if (this.TopAppBar != null)
   {
       this.TopAppBar.IsSticky = true;
   }
}

private void btnSetAppBar2_Click(object sender, RoutedEventArgs e)
{
    if (BottomAppBar.IsOpen ==false)
    {
       this.BottomAppBar.IsOpen = true;
    }
}

既然是通用应用了,那么WP这边自然也是相似的。只是临时还仅仅有BottomAppBar却没有TopAppBar呢,以下是系统给生成的代码,和Windows上的一样。

    <Page.BottomAppBar>
        <CommandBar>
            <AppBarButton Icon="Accept" Label="appbarbutton"/>
            <AppBarButton Icon="Cancel" Label="appbarbutton"/>
        </CommandBar>
    </Page.BottomAppBar>

想要了解很多其它关于应用栏的内容。大家能够參考下一篇中的应用栏。

经常使用属性

Background:背景色

BorderBrush:边框色

BorderThickness:边框大小

  <Button Background="Red" BorderBrush="Blue" BorderThickness="5" Height="66" Width="153"/>

ClickMode:点击模式,详细有3种:悬停(Hover)、按压(Press)、释放(Release)

Content:内容

FontFamily:字体

FontSize:字体大小

Foreground:字体颜色

FontStretch:字体在屏幕上的展开程度

时间: 2024-10-14 08:17:50

Windows App开发之应用布局与基本导航的相关文章

【万里征程——Windows App开发】应用栏

基本的用法我们在 [万里征程--Windows App开发]页面布局和基本导航中已经讲过了,这里继续补充关于应用栏的更多用法. Icon 在之前的学习中,我们知道Icon属性中有很多很多系统预定义,但也许这些还是不够的,现在就来增加几种用法咯. 字符集应用 <AppBarToggleButton Label="Sigma" Click="AppBarButton_Click"> <AppBarToggleButton.Icon> <Fo

【万里征程——Windows App开发】应用设置和应用帮助

"设置"合约 上一节中我们学习了如何将应用设置保存到本地,这种方式是通过在App内添加设置选项,这里还有一种方式.微软将其称为"设置"合约,并且所有的Windows应用商店应用都将自动配合这种合约.但是应用自带的这种设置如果不做任何修改可谓毫无作用.而我们添加这些设置则可以让应用更加个性化哦. SettingsFlyout 首先新建一个SettingsFlyout页面,也许很多童鞋会像我当初学这个一样立马就调试程序等着看看这个设置是长什么样,不过现在还用不了哦. 如

【万里征程——Windows App开发】设置共享(共享源和共享目标)

上一篇博客简单介绍了通过粘贴板来共享数据,这一节将会添加更为强大的功能哦. 以下就是大概的样式了,随便看看就好了,这都不是重点. <Grid Background="AliceBlue"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition /> <RowDefinition Height="auto"/>

Windows App开发之开发准备

操作系统及SDK 操作系统 显而易见.想要开发Windows App就得在Windows 8/8.1/10上进行.老旧的Windows XP/Vista/7已经不能满足时代的须要了. 当然.在Windows App的发展过程中,其本身也有着较大的变动,为了使用新的特性,建议使用Windows 10.我在写这个教程时.Windows 10正式版并未面世,因此临时未介绍Windows 10上的新特性,随后会继续更新,欢迎您的继续关注. 操作系统除了在官网下载之外.还能够在DreamSpark等地方下

Windows App开发之文件与数据

读取文件和目录名 这一节開始我们将陆续看到Windows App是如何操作文件的. 在Windows上读取文件名称.目录名 首先我们在XAML中定义一个Button和TextBlock,将读取文件/目录名的过程写在前者的click事件中.后者则用来显示文件信息. <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <StackPanel Orientation="Ho

【万里征程——Windows App开发】SemanticZoom视图切换

相信用过Windows Phone或者Windows 8/8.1/10的朋友对下面这张截图肯定不陌生.这就是通过SemanticZoom来实现的,当数据过多时,这种控件尤其适用.它有一个放大视图ZoomedInView和一个缩小试图ZoomedOutView,前者主要用来显示当前页面的详细信息,后者则致力于快速导航. 那么我就自己来动手实践咯,首先我们在XAML中添加大致的界面,就像画画要先画轮廓一样. <Grid Name="grid1" Background="{T

【万里征程——Windows App开发】如何保存、读取、删除应用数据

在前面的几篇博客中,都是关于数据的,这方面的内容其实还有很多很多,省略掉一部分后,也还是有很多.这一篇将是很重要的一部分,关于保存和读取数据,对于游戏而言,这一点尤其重要. 先来看看一个大概的背景吧,我这里写的很简单啦^_^ 保存的内容就是这四个框框里填写的数据咯.先上XAML代码. <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <StackPanel Orientati

【万里征程——Windows App开发】ListView&amp;GridView之分组

本文承接[万里征程--Windows App开发]ListView&GridView之添加数据. 在上一篇中我们已经了解了怎样将数据绑定到ListView或GridView,但既然要用到这两个控件往往是因为数据繁多,那么几乎就不可避免的要让其能够分组.我们所绑定的数据源可能是项列表,其中的每个项甚至还有其自己的项,那么问题就来了. 一时不会也想不出什么宏伟的例子,就做一个简单的闹钟的时间表的ListView和GridView吧.那么先在项目中添加一个类,最好在Shared下.内容都是很简易的,闹

【万里征程——Windows App开发】开发准备

操作系统及SDK 操作系统 如果打算开发Windows App,那么你的电脑就不能再用老旧的Windows 7了.推荐使用Windows 8.1.写这篇博客的时候,我用的操作系统是Windows 10 Pro Technical Preview [Build 10041]. 操作系统除了在官网下载之外,还可以在DreamSpark等地方下载.DreamSpark上除了Office其他微软操作系统.开发工具及其他软件对学生均免费开放. 另外再推荐一个网站:MSDN i tell you Visua