zoukankan      html  css  js  c++  java
  • 关于Silverlight的布局

        silverlight的整个页面就是一个内容控件继承自UserControl。这是一个内容控件,具有Content属性。此属性只能是唯一的,所以在页面的跟元素下,添加一个以上的控件或者文本会提示:“属性"Content"已设置多次。”,但是我们可以通过嵌套布局控件来达到复杂的布局需求。

        一,布局容器

          1. Grid:新建SL应用程序时,系统默认生成的布局控件相当于Html中的表格布局。

    <Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
    <ColumnDefinition></ColumnDefinition>
    <ColumnDefinition />
    <ColumnDefinition></ColumnDefinition>
    <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
    <RowDefinition></RowDefinition>
    <RowDefinition></RowDefinition>
    <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    </Grid>

    这个是4列3行的Grid 其中一列是用集合编辑器添加。右键点击Grid选择属性就会在属性窗口看到2个按钮分别为行和列。编辑其中可以设定行或者列的宽度、高度、最大宽度,最小宽度。其中宽度和高度的默认值是“*”这个是告诉容器此行或者列占用剩余的所有空间。

        grid的动态创建

     public partial class MainPage : UserControl
    {
    public MainPage()
    {
    InitializeComponent();
    this.Content = _creatNewGrid();
    }
    public Grid _creatNewGrid()
    {
    Grid _grid = new Grid();
    for (int i = 0; i < 3;i++ )//创建3行
    {
    RowDefinition _rows = new RowDefinition();
    _rows.Height = new System.Windows.GridLength(1, GridUnitType.Star);
    _grid.RowDefinitions.Add(_rows);
    }
    for (int j = 0; j < 3; j++)//创建3列
    {
    ColumnDefinition _col = new ColumnDefinition();
    _col.Width = new System.Windows.GridLength(1, GridUnitType.Auto);
    _grid.ColumnDefinitions.Add(_col);
    }
    TextBox _textbox = new TextBox(); //添加一个TextBox控件
    _textbox.Text = "Grid布局中添加一个控件!";
    Grid.SetRow(_textbox, 0);
    Grid.SetColumn(_textbox, 0);//添加到第一行第一列注意行号从0开始,添加时使用的是Grid的静态方法!
    _grid.Children.Add(_textbox);
    return _grid;

    }
    }

    当然作为类似表格布局一样的存在,Grid也可以单独设置每一行或列的属性,还可以合并单元格。

      2.StackPanel 小区域布局控件,给定一组控件按照Orientation属性的值(水平和垂直)来决定控件的显示方式。

      3.Canvas控件,基于坐标的布局控件。

          其内的控件主要属性为:Canvas.ZIndex,Canvas.Left 和Canvas.Top 这3个属于依赖属性(DependencyProperty)。

     这3种容器控件,是SL应用程序中最常用到的。

     4.ScrollViewer, 要想让你的页面具有滚动条你就要在容器的外面在包上一层,代码最直观!

     <ScrollViewer Name="svContainer"  Background="#dcdcdc" HorizontalContentAlignment="Left" VerticalAlignment="Top" BorderBrush="Beige"  BorderThickness="0" HorizontalAlignment="Left"  Width="900" Height="600"  Grid.Row="1"  HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Margin="0,0,0,0">
    <ScrollViewer.Content>
    <Border VerticalAlignment="Top" HorizontalAlignment="Left" BorderThickness="1" BorderBrush="White" >
    <Canvas Name="cnsDesignerContainer" VerticalAlignment="Top" HorizontalAlignment="Left" Width="900" Height="580" Background="#ffffff">
    </Canvas>
    </Border>
    </ScrollViewer.Content>
    </ScrollViewer>

    相当的虎头蛇尾,基本的页面布局就着4种控件了。

      

  • 相关阅读:
    Codeforces 1131 C. Birthday-暴力 (Codeforces Round #541 (Div. 2))
    Codeforces 1131 B. Draw!-暴力 (Codeforces Round #541 (Div. 2))
    DP之背包经典三例
    博弈规律综概
    腾讯面试题:杯子质量(最优查找)
    洛谷P1308——单词统计
    AtCoder Regular Contest 069 D
    Codeforces 782C. Andryusha and Colored Balloons 搜索
    Codeforces 799D. String Game 二分
    Codeforces 767B. The Queue 模拟题
  • 原文地址:https://www.cnblogs.com/glorysword/p/2294590.html
Copyright © 2011-2022 走看看