Basic elements for layout definition
When you work with HTML, you build the basic visual structure of a page by using tables or divs (in more modern browsers, you can use a canvas as well). In Silverlight 5 we have three basic elements: Canvas
, StackPanel
, and Grid
.
Canvas
This layout control permits us to place Child controls in coordinates relative to the canvas parent (taking into account that the upper-left corner of the canvas is the (0,0) coordinate) X, Y, Z (Z for the ZIndex
). It is perfect for the implementation of drawing applications or those devoted to diagram management.
In the following code you can see an example where a rectangle and an ellipse are drawn:
<Canvas> <Rectangle Canvas.Top="25" Canvas.Left="50" Fill="Blue" Width="70" Height="80" StrokeThickness="3" Stroke="Black" /> <Ellipse Canvas.Top="50" Canvas.Left="80" Fill="Yellow" Width="120" Height="80" StrokeThickness="3" Stroke="Black" /> </Canvas>
Canvas.Top
and Canvas.Left
are attached properties. Such properties allow a child element to store a value associated with a property defined on an ancestor element.
The result is as shown in the following screenshot:

StackPanel
The StackPanel
control allows us to pile up child controls in horizontal or vertical rows. We can nest several StackPanel
controls. This combination makes it possible to implement complex layouts, as shown in the following code and the resulting screenshot:
<StackPanel Orientation="Vertical" HorizontalAlignment="Center"> <Image Source="./images/Hydrangeas.jpg" Height="200" Margin="5"/> <StackPanel Orientation="Horizontal"> <Image Source="./images/Chrysanthemum.jpg" Height="100" Margin="5"/> <Image Source="./images/Hydrangeas.jpg" Height="100" Margin="5"/> <Image Source="./images/Jellyfish.jpg" Height="100" Margin="5"/> </StackPanel> </StackPanel>

Grid
A grid permits us to place content in rows and columns. The concept is similar to an HTML table, but much more evolved. Before you start adding controls to the grid, you need to specify its layout. This is done with the Grid.RowDefinitions
and Grid.ColumnDefinitions
collection.
To set the position of the element inside the grid, we use the attached properties Grid.Row
and Grid.Column
. The first position starts at 0
. To establish the width or height of a given row or column, we can use a fixed pixel width/height. Let the layout manager autoadjust the size to the space available (auto), or provide a given width/height based on percentages instead of pixels.
<Grid x:Name="LayoutRoot" Background="White"> <Grid.RowDefinitions> <RowDefinition Height="100"/> <RowDefinition Height="100"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="150"/> <ColumnDefinition Width="90"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Image Source="./images/Desert.jpg" Height="100" Margin="5" Grid.Row="0" Grid.Column="0"/> <TextBlock Text="Desert" Grid.Row="0" Grid.Column="1"/> <TextBlock Text="Geographical area whose average annual precipitation is less than 250 millimeters (10 in) per year." Grid.Row="0" Grid.Column="2" TextWrapping="Wrap" /> <Image Source="./images/Tulips.jpg" Height="100" Margin="5" Grid.Row="1" Grid.Column="0"/> <TextBlock Text="Tulip" Grid.Row="1" Grid.Column="1"/> <TextBlock Text="Perennial, bulbous plant which belongs to the family Liliaceae." Grid.Row="1" Grid.Column="2" TextWrapping="Wrap" /> </Grid>

Controls
Silverlight offers us a series of user controls, which are available in the Toolbox palette. The most common ones are shown in the following screenshot:

You can find additional controls (for free) in the Silverlight Toolkit (http://silverlight.codeplex.com/). There are plenty of commercial libraries available.
- 數(shù)據(jù)產(chǎn)品經(jīng)理高效學(xué)習(xí)手冊:產(chǎn)品設(shè)計、技術(shù)常識與機(jī)器學(xué)習(xí)
- 大規(guī)模數(shù)據(jù)分析和建模:基于Spark與R
- SQL Server 2016 數(shù)據(jù)庫教程(第4版)
- 云計算環(huán)境下的信息資源集成與服務(wù)
- Access 2007數(shù)據(jù)庫應(yīng)用上機(jī)指導(dǎo)與練習(xí)
- 大數(shù)據(jù):從概念到運(yùn)營
- 基于Apache CXF構(gòu)建SOA應(yīng)用
- Python金融實(shí)戰(zhàn)
- 數(shù)據(jù)庫原理與應(yīng)用
- 智慧城市中的大數(shù)據(jù)分析技術(shù)
- Expert Python Programming(Third Edition)
- Filecoin原理與實(shí)現(xiàn)
- Spring Boot 2.0 Cookbook(Second Edition)
- Google Cloud Platform for Architects
- Scratch Cookbook