<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一步一步學Silverlight 2系列(3):界面布局

      概述

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

      本文為系列文章第三篇,學習Silverlight 2中的界面布局,Silverlight 2中新增加了Grid和Panel兩個布局容器,使得界面布局更加的強大和靈活。

      Canvas面板

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

      TerryLee_Silverlight2_0020

      運行后界面的效果如下所示:

      TerryLee_Silverlight2_0021

      除了上面我們用到的Canvas.Top和Canvas.Left兩個附加屬性外,還有一個Canvas.ZIndex附加屬性。如果指定了兩個控件相對于父容器Canvas同樣的邊距,則后面聲明的控件父覆蓋前面聲明的控件。這時我們可以使用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>

      指定兩個矩形相對于父容器Canvas的邊距相同,這時默認的后聲明的橙色矩形會覆蓋藍色矩形:

      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>

      將會讓藍色矩形顯示在上面,值最大的顯示在最上面:

      TerryLee_Silverlight2_0024

      StackPanel

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

      <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>

      運行后在界面顯示效果如下:

      TerryLee_Silverlight2_0025

      當然我們也可以指定為水平排列,通過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>

      運行后界面顯示效果如下:

      TerryLee_Silverlight2_0026

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

      Grid

      Grid控件類似與HTML中的Table,只不過子元素不用放在單元格中。通過<Grid.RowDefinitions> 和 <Grid.ColumnDefinitions>來定義Grid的行和列,使用Grid.Row和Grid.Column兩個附加屬性指定子元素在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>

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

      TerryLee_Silverlight2_0027

      綜合實例

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

      TerryLee_Silverlight2_0028

      首先我們添加一個兩行兩列的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>

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

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

      再添加顏色值顯示區,嵌套一個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>

      左邊用四個Silder控件和四個TextBlock控件顯示,需要對Grid的行進行合并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>

      這樣我們就完成了上面這樣相對復雜的界面布局,對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();
      }
      運行后,可以選取不同的顏色值:

      TerryLee_Silverlight2_0029

      結束語

      關于界面布局就說到這里,在Silverlight 2中,通過上面的三種布局控件相結合,可以進行非常強大和靈活的界面布局。

      下一篇:一步一步學Silverlight 2系列(4):鼠標事件處理

      posted @ 2008-03-07 21:27  TerryLee  閱讀(45972)  評論(87)    收藏  舉報
      主站蜘蛛池模板: 日本一区二区不卡精品| 亚洲色最新高清AV网站| 欧美日韩国产综合草草| 一区二区三区四区五区自拍| 国产超碰无码最新上传| 国产精品亚洲一区二区三区喷水| 夜夜爽妓女8888888视频| 一卡2卡三卡4卡免费网站| 日本一码二码三码的区分| 亚洲伊人精品久视频国产| 无码视频伊人| 久久久久久毛片免费播放| 亚洲中文字幕无码av永久| 日本一区二区久久人妻高清| 亚洲国产精品男人的天堂| 亚洲欧美综合精品成人导航| 国产精品尤物午夜福利| 男受被做哭激烈娇喘gv视频 | 国产揄拍国产精品| 4480yy亚洲午夜私人影院剧情| 中文文字幕文字幕亚洲色| 亚洲人成人影院在线观看| 国产人成精品一区二区三| 免费无码成人AV片在线| 久久丫精品国产| 丰满少妇熟乱xxxxx视频| 男女一级国产片免费视频| 亚洲乱理伦片在线观看中字| 安康市| 亚洲男人天堂2018| 久久88香港三级台湾三级播放| 亚洲精品日韩在线观看| 亚洲sm另类一区二区三区| 尹人香蕉久久99天天拍| 亚洲国产码专区在线观看| 隔壁老王国产在线精品| 免费观看添你到高潮视频| 精品国产这么小也不放过| 麻豆成人久久精品二区三| 亚洲欧美成人aⅴ在线| 一本久久a久久精品综合|