天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

一步一步學(xué)Silverlight :界面布局

概述

Silverlight 2 Beta 1版本發(fā)布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, IronPython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學(xué)Silverlight 2系列》文章帶您快速進(jìn)入Silverlight 2開發(fā)。

本文為系列文章第三篇,學(xué)習(xí)Silverlight 2中的界面布局,Silverlight 2中新增加了Grid和Panel兩個(gè)布局容器,使得界面布局更加的強(qiáng)大和靈活。

Canvas面板

Canvas是在Silverlight 1.0時(shí)代就有的一種基礎(chǔ)布局面板,它采用絕對坐標(biāo)定位。可以使用附加屬性(Attached Property)對Canvas中的元素進(jìn)行定位,通過附加屬性我們指定控件相對于其直接父容器Canvas 控件的上、下、左、右坐標(biāo)的位置。如下面的XAML聲明了兩個(gè)矩形,它們分別相對于父容器Canvas的左邊距是50,相對于父容器Canvas的上邊距分別是50和150:

TerryLee_Silverlight2_0020

運(yùn)行后界面的效果如下所示:

TerryLee_Silverlight2_0021

除了上面我們用到的Canvas.Top和Canvas.Left兩個(gè)附加屬性外,還有一個(gè)Canvas.ZIndex附加屬性。如果指定了兩個(gè)控件相對于父容器Canvas同樣的邊距,則后面聲明的控件父覆蓋前面聲明的控件。這時(shí)我們可以使用Canvas.ZIndex屬性來改變它們的顯示順序,如下面的XAML聲明:

<Canvas Background="#46461F">    <Rectangle Fill="#0099FF" Width="160" Height="80"               Canvas.Top="100" Canvas.Left="100">    <Rectangle Fill="#FF9900" Width="160" Height="80"             Canvas.Top="100" Canvas.Left="100"/></Canvas>

指定兩個(gè)矩形相對于父容器Canvas的邊距相同,這時(shí)默認(rèn)的后聲明的橙色矩形會覆蓋藍(lán)色矩形:

TerryLee_Silverlight2_0023

指定Canvas.ZIndex為1

<Canvas Background="#46461F">    <Rectangle Fill="#0099FF" Width="160" Height="80"               Canvas.Top="100" Canvas.Left="100" Canvas.ZIndex="1"/>    <Rectangle Fill="#FF9900" Width="160" Height="80"             Canvas.Top="100" Canvas.Left="100"/></Canvas>

將會讓藍(lán)色矩形顯示在上面,值最大的顯示在最上面:

TerryLee_Silverlight2_0024

StackPanel

StackPanel支持用行或列的方式來進(jìn)行頁面布局,默認(rèn)情況下所有的子元素會垂直的排列顯示,如下面的XAML聲明三個(gè)矩形:

<StackPanel Background="#46461F">    <Rectangle Fill="#0099FF" Stroke="White"               Width="100" Height="50" Margin="10"/>    <Rectangle Fill="#0099FF" Stroke="White"               Width="100" Height="50" Margin="10"/>    <Rectangle Fill="#0099FF" Stroke="White"               Width="100" Height="50" Margin="10"/></StackPanel>

運(yùn)行后在界面顯示效果如下:

TerryLee_Silverlight2_0025

當(dāng)然我們也可以指定為水平排列,通過Orientation屬性指定:

<StackPanel Background="#46461F" Orientation="Horizontal">    <Rectangle Fill="#0099FF" Stroke="White"               Width="100" Height="50" Margin="10"/>    <Rectangle Fill="#0099FF" Stroke="White"               Width="100" Height="50" Margin="10"/>    <Rectangle Fill="#0099FF" Stroke="White"               Width="100" Height="50" Margin="10"/></StackPanel>

運(yùn)行后界面顯示效果如下:

TerryLee_Silverlight2_0026

在這里為了讓各個(gè)控件之間有一定的距離,使用了Margin屬性,該屬性類似于HTML中的Margin。

 

 

Grid

Grid控件類似與HTML中的Table,只不過子元素不用放在單元格中。通過<Grid.RowDefinitions> 和 <Grid.ColumnDefinitions>來定義Grid的行和列,使用Grid.Row和Grid.Column兩個(gè)附加屬性指定子元素在Grid中顯示的位置,這是一種非常靈活的布局方式。如下面的XAML聲明:

<Grid x:Name="LayoutRoot" Background="#46461F" ShowGridLines="True">    <Grid.RowDefinitions>        <RowDefinition Height="120"/>        <RowDefinition Height="*"/>    </Grid.RowDefinitions>    <Grid.ColumnDefinitions>        <ColumnDefinition Width="100"/>        <ColumnDefinition Width="*"/>    </Grid.ColumnDefinitions>    <TextBlock Grid.Row="0" Grid.Column="0" Text="UserName:" VerticalAlignment="Center" Foreground="White"></TextBlock>    <TextBlock Grid.Row="1" Grid.Column="0" Text="Password:" VerticalAlignment="Center" Foreground="White"></TextBlock>    <TextBox Grid.Row="0" Grid.Column="1" Width="200" Height="30" HorizontalAlignment="Left"></TextBox>    <TextBox Grid.Row="1" Grid.Column="1" Width="200" Height="30" HorizontalAlignment="Left"></TextBox></Grid>

定義一個(gè)兩行兩列的Grid,做一個(gè)簡單的用戶登錄的布局,為了明顯起見,把ShowGridLines屬性設(shè)為True,以便能夠顯示出邊框線。同時(shí),我們指定了第一行的高度為120,而第二行的則是剩余的高度,用*來指定。運(yùn)行后效果如下:

TerryLee_Silverlight2_0027

綜合實(shí)例

分別了解了上面的三個(gè)布局控件,接下來我們看一個(gè)綜合實(shí)例,如何完成如下的一個(gè)取色器:

TerryLee_Silverlight2_0028

首先我們添加一個(gè)兩行兩列的Grid控件,分別指定行高和列寬:

<Grid x:Name="LayoutRoot" Background="White">    <Grid.ColumnDefinitions>        <ColumnDefinition Width="260" />        <ColumnDefinition Width="*" />    </Grid.ColumnDefinitions>    <Grid.RowDefinitions>        <RowDefinition Height="120" />        <RowDefinition Height="120" />    </Grid.RowDefinitions></Grid>

添加顏色顯示區(qū)域,用一個(gè)矩形顯示,放入Grid的第0行第1列:

<Rectangle Grid.Row="0" Grid.Column="1" x:Name="PreviewColor"                   Fill="#FF6600" Margin="10" Stroke="#666666" StrokeThickness="2" />

再添加顏色值顯示區(qū),嵌套一個(gè)StackPanel控件,讓它里面的子控件垂直顯示:

<StackPanel Grid.Row="1" Grid.Column="1" >    <TextBlock FontSize="12">Color</TextBlock>    <TextBox x:Name="HexColor" Width="160" Height="30" Text="#FF6600" Margin="10,5" FontSize="11"/></StackPanel>

左邊用四個(gè)Silder控件和四個(gè)TextBlock控件顯示,需要對Grid的行進(jìn)行合并Grid.RowSpan屬性:

<StackPanel Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" VerticalAlignment="Center">   <TextBlock Text="Alpha" FontSize="12" Margin="10,15,0,0"/>   <Slider x:Name="AlphaSlider" Margin="20,0,10,0" Maximum="255" Value="255" ValueChanged="RedSlider_ValueChanged"/>   <TextBlock Text="Red" FontSize="12" Margin="10,15,0,0"/>   <Slider x:Name="RedSlider" Margin="20,0,10,0" Maximum="255" Value="255" ValueChanged="RedSlider_ValueChanged"/>   <TextBlock Text="Green" FontSize="12" Margin="10,15,0,0"/>   <Slider x:Name="GreenSlider" Margin="20,0,10,0" Maximum="255" Value="102" ValueChanged="RedSlider_ValueChanged"/>   <TextBlock Text="Blue" FontSize="12" Margin="10,15,0,0"/>   <Slider x:Name="BlueSlider" Margin="20,0,10,0" Maximum="255" Value="0" ValueChanged="RedSlider_ValueChanged"/></StackPanel>

這樣我們就完成了上面這樣相對復(fù)雜的界面布局,對Slider控件添加事件處理程序:

private void RedSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){    Color color = Color.FromArgb((byte)AlphaSlider.Value, (byte)RedSlider.Value, (byte)GreenSlider.Value, (byte)BlueSlider.Value);    PreviewColor.Fill = new SolidColorBrush(color);    HexColor.Text = color.ToString();}

運(yùn)行后,可以選取不同的顏色值:

TerryLee_Silverlight2_0029

結(jié)束語

關(guān)于界面布局就說到這里,在Silverlight 2中,通過上面的三種布局控件相結(jié)合,可以進(jìn)行非常強(qiáng)大和靈活的界面布局。

NET技術(shù)一步一步學(xué)Silverlight :界面布局,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产亚洲AV无码成人网站 | 欧美精品99久久久啪啪 | 各种肉黄浪荡故事集 | 另类重口bdsm日本tv | 成年女人色毛片免费 | 有人在线观看的视频吗免费 | 国产免费看黄的私人影院 | 美女的隐私蜜桃传媒免费看 | 天天综合网网欲色 | 中文人妻熟妇精品乱又伧 | 97 sese| 国产午夜精品鲁丝片 | 日韩欧美一级 | 亚婷婷洲AV久久蜜臀无码 | 欧美日韩综合一区 | 99re热有精品国产 | 久久妇女高潮几次MBA | 秋霞电影网午夜鲁丝片 | 一二三四在线播放免费观看中文版视频 | 午夜精品久久久内射近拍高清 | 红桃视频国产AV | 色愁愁久久久 | 在线日韩欧美一区二区三区 | 国产女人91精品嗷嗷嗷嗷 | 日韩免费一区二区三区在线 | 伊人成综合网伊人222 | WWW国产精品内射熟女 | 国产午夜理论片YY8840Y | 沦为公交两奶头春药高潮迭起 | 亚洲欧洲日韩国产一区二区三区 | 国产精品97久久久久久AV色戒 | 囯产免费久久久久久国产免费 | 国产传媒精品1区2区3区 | 男人舔女人的阴部黄色骚虎视频 | 真人做受120分钟免费看 | 国产一级特黄a大片99 | avove主播 | 欧美精品一区二区蜜臀亚洲 | 亚洲国产综合久久久无码色伦 | 久久久久国产精品美女毛片 | 午夜国产精品视频 |