程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Windows 8 Store Apps學習(7) 布局控件

Windows 8 Store Apps學習(7) 布局控件

編輯:關於.NET

Canvas, Grid, StackPanel, VirtualizingS

介紹

重新想象 Windows 8 Store Apps 之布局控件

Canvas - 絕對定位式布局

Grid - 網格式布局

StackPanel - 流式布局

VirtualizingStackPanel - 僅能用於 ItemsControl

WrapGrid - 僅能用於 ItemsControl

VariableSizedWrapGrid - 用於 Wrap 子元素集合

示例

1、Canvas 的 Demo

CanvasDemo.xaml

<Page
    x:Class="XamlDemo.Controls.Layout.CanvasDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XamlDemo.Controls.Layout"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">   
       
    <Grid Background="Transparent">   
        <!--   
            Canvas - 絕對定位式布局   
                Canvas.Left - 與上一層 Canvas 的 Y軸 間的距離,左上角為原點   
                Canvas.Top - 與上一層 Canvas 的 X軸 間的距離,左上角為原點   
               
            注:Canvas 基於坐標定位,其不會因為自身的大小而限制子元素的大小   
        -->
        <Canvas HorizontalAlignment="Left" VerticalAlignment="Top" Background="Red" Width="100" Height="100" Margin="120 0 0 0">   
       
            <Canvas Background="Green" Width="200" Height="200" Canvas.Left="120" Canvas.Top="120" >   
                <TextBlock Text="TextBlock" Canvas.Top="20" />   
            </Canvas>   
       
        </Canvas>   
    </Grid>   
</Page>

2、Grid 的 Demo

GridDemo.xaml

<Page
    x:Class="XamlDemo.Controls.Layout.GridDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XamlDemo.Controls.Layout"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">   
       
    <Grid Background="Transparent">   
        <!--   
            Grid - 網格式布局   
                Grid.RowDefinitions - 用於定義 Grid 中的行   
                Grid.ColumnDefinitions - 用於定義 Grid 中的列   
                Width - 寬度   
                MinWidth - 最小寬度   
                MaxWidth - 最大寬度   
                Height - 高度   
                MinHeight - 最小高度   
                MaxHeight - 最大高度   
                Grid.Row - 控件所在的 Grid 的行的索引   
                Grid.Column - 控件所在的 Grid 的列的索引   
                Grid.RowSpan - 合並行。 控件所在行,以及控件所在行之後的需要連續合並的行的總行數 

  
                Grid.ColumnSpan - 合並列。 控件所在列,以及控件所在列之後的需要連續合並的列的總列數   
                Canvas.ZIndex - 用於設置任意控件的 z-index 值   
                               
            Width 和 Height 的可用值如下:   
、Auto - 自動設置為一個合適的值。默認值   
、Pixel - 像素值   
、* - 比例值。如 * 就是全部,2* 和 8* 就是分別占 20% 和 80%   
        -->
        <Grid Background="Blue" Width="300" Height="300" Canvas.ZIndex="100">   
            <Grid.RowDefinitions>   
                <RowDefinition Height="50" />   
                <RowDefinition Height="3*" />   
                <RowDefinition Height="7*" />   
                <RowDefinition Height="*" MinHeight="50" MaxHeight="100" />   
                <RowDefinition Height="Auto" />   
            </Grid.RowDefinitions>   
            <Grid.ColumnDefinitions>   
                <ColumnDefinition />   
                <ColumnDefinition />   
                <ColumnDefinition />   
            </Grid.ColumnDefinitions>   
       
            <TextBox Grid.Row="0" Grid.Column="0" Background="red" Text="webabcd" />   
            <TextBox Grid.Row="0" Grid.Column="1" Background="red" Text="webabcd" Grid.ColumnSpan="2" HorizontalAlignment="Center" />   
            <TextBox Grid.Row="1" Grid.Column="0" Background="red" Text="webabcd" />   
            <TextBox Grid.Row="1" Grid.Column="1" Background="red" Text="webabcd" Grid.ColumnSpan="2" HorizontalAlignment="Center" />   
            <TextBox Grid.Row="2" Grid.Column="0" Background="red" Text="webabcd" />   
            <TextBox Grid.Row="2" Grid.Column="1" Background="red" Text="webabcd" Grid.RowSpan="2" VerticalAlignment="Bottom" />   
            <TextBox Grid.Row="2" Grid.Column="2" Background="red" Text="webabcd" />   
            <TextBox Grid.Row="3" Grid.Column="2" Background="red" Text="webabcd" />   
            <TextBox Grid.Row="4" Grid.Column="2" Background="red" Text="webabcd" />   
        </Grid>   
       
               
        <!--       
            Canvas.ZIndex - 用於設置任意控件的 z-index 值   
               
            說明:   
、Grid 的 HorizontalAlignment 屬性和 VerticalAlignment 屬性的默認值均是 Stretch   
、在 Grid 內的所有子元素均需要通過 Margin 屬性進行相對定位   
        -->
        <Rectangle Margin="10 50 100 150" Fill="Green" Canvas.ZIndex="10" />   
               
    </Grid>   
</Page>

3、StackPanel 的 Demo

StackPanelDemo.xaml

<Page
    x:Class="XamlDemo.Controls.Layout.StackPanelDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XamlDemo.Controls.Layout"
    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 HorizontalAlignment="Left" Margin="120 0 0 0">   
       
            <!--   
                StackPanel - 流式布局   
                    Orientation - StackPanel 控件內對象的排列方向   
                        Horizontal - 水平排列   
                        Vertical - 垂直排列   
            -->
            <StackPanel Orientation="Horizontal">   
                <TextBlock Text="a" Margin="5" />   
                <TextBlock Text="b" Margin="5" />   
                <TextBlock Text="c" Margin="5" />   
            </StackPanel>   
       
            <StackPanel Orientation="Vertical">   
                <TextBlock Text="a" Margin="5" />   
                <TextBlock Text="b" Margin="5" />   
                <TextBlock Text="c" Margin="5" />   
            </StackPanel>   
       
        </StackPanel>   
    </Grid>   
</Page>

4、VirtualizingStackPanel 的 Demo

VirtualizingStackPanelDemo.xaml

<Page
    x:Class="XamlDemo.Controls.Layout.VirtualizingStackPanelDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XamlDemo.Controls.Layout"
    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">   
       
            <TextBlock Name="lblMsg" FontSize="14.667">   
                <Run>僅能用於 ItemsControl</Run>   
                <LineBreak />   
                <Run>請參見 Controls/ListBoxDemo.xaml</Run>   
            </TextBlock>   
       
        </StackPanel>   
    </Grid>   
</Page>

5、WrapGrid 的 Demo

WrapGridDemo.xaml

<Page
    x:Class="XamlDemo.Controls.Layout.WrapGridDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XamlDemo.Controls.Layout"
    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">   
       
            <TextBlock Name="lblMsg" FontSize="14.667">   
                <Run>僅能用於 ItemsControl</Run>   
                <LineBreak />   
                <Run>請參見 Controls/GridView/Demo.xaml</Run>   
            </TextBlock>   
                   
        </StackPanel>   
    </Grid>   
</Page>

6、VariableSizedWrapGrid 的 Demo

VariableSizedWrapGridDemo.xaml

<Page
    x:Class="XamlDemo.Controls.Layout.VariableSizedWrapGridDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:XamlDemo.Controls.Layout"
    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">   
       
            <TextBlock Name="lblMsg" FontSize="14.667">   
                <Run>另請參見 Controls/GridView/VariableSized.xaml</Run>   
            </TextBlock>   
       
            <!--   
                VariableSizedWrapGrid   
、用於 Wrap 子元素集合   
、關於 VariableSized 的功能詳見 Controls/GridView/VariableSized.xaml   
            -->
            <VariableSizedWrapGrid Orientation="Horizontal" HorizontalAlignment="Left" 

Background="Green" Width="1000" Margin="0 10 0 0">   
                <VariableSizedWrapGrid.Children>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                    <Image Source="/Assets/Logo.png" Width="100" Height="100" Margin="10" 

/>   
                </VariableSizedWrapGrid.Children>   
            </VariableSizedWrapGrid>   
       
        </StackPanel>   
    </Grid>   
</Page>

OK

[源碼下載]:http://files.cnblogs.com/webabcd/Windows8.rar

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved