This walkthrough shows you to create fluid UI layout using DockPanel.
In this walkthrough, you perform the following tasks:
Prerequisites
You need the following components to complete this walkthrough:
- Visual Studio 2010
- Silverlight 4 Tools for Visual Studio 2010
- Intersoft ClientUI 2010
Creating a new ClientUI Application Project
The first step is to create a new ClientUI Application project using Intersoft ClientUI Application project template in Visual Studio.
To create the ClientUI Application project
- Start Visual Studio 2010.
- Create a new ClientUI Application project using Intersoft ClientUI Application project template. To learn more, see Walkthrough: Create New Intersoft ClientUI Application Template.
Creating Fluid UI Layout using DockPanel
This section show how to use dock panel to create fluid ui layout.
To create the View pattern
- Open MainPage.xaml
- Add a DockPanel as a layout. Set the Width and Height properties to Auto.
XAML |
Copy Code
|
<Grid x:Name="LayoutRoot">
<Intersoft:DockPanel Name="dockPanel1" FillChildMode="Custom" />
</Grid> |
- Add a Border as container of each component.
Set the following properties of the first Border as down below.
Set the following properties of the second Border as down below.
Set the following properties of the third Border as down below.
Properties |
Value |
DockPanel.Dock: |
Left |
Width: |
50 |
Height: |
Auto |
Set the following properties of the fourth Border as down below.
Set the DockPanel.IsFillElement property of the fifth Border to True.
XAML |
Copy Code
|
<Intersoft:DockPanel Name="dockPanel1" FillChildMode="Custom">
<Border BorderBrush="Silver" BorderThickness="1" Height="50" Name="border1" Intersoft:DockPanel.Dock="Top" />
<Border BorderBrush="Silver" BorderThickness="1" Height="50" Name="border2" Intersoft:DockPanel.Dock="Bottom" />
<Border BorderBrush="Silver" BorderThickness="1" Name="border3" Width="50" Intersoft:DockPanel.Dock="Left" />
<Border BorderBrush="Silver" BorderThickness="1" Name="border4" Width="50" Intersoft:DockPanel.Dock="Right" />
<Border BorderBrush="Silver" BorderThickness="1" Name="border5" Intersoft:DockPanel.IsFillElement="True" />
</Intersoft:DockPanel> |
- Add a TextBlock inside the first Border. Set the following properties of TextBlock as down below.
Properties |
Value |
HorizantalAlignment: |
Center |
FontSize: |
16 |
Text: |
Sarah Brightman : Live in Vienna |
XAML |
Copy Code
|
<Border BorderBrush="Silver" BorderThickness="1" Height="50" Name="border1" Intersoft:DockPanel.Dock="Top">
<TextBlock Height="23" Name="textBlock1" Text="Sarah Brightman : Live in Vienna" FontSize="16" HorizontalAlignment="Center" />
</Border> |
- Add an UXButton inside the third Border. Set the following properties of UXButton as below.
Properties |
Value |
CornerRadius |
12 |
Width |
24 |
Height |
24 |
Content |
< |
FontWeight |
Bold |
XAML |
Copy Code
|
<Border BorderBrush="Silver" BorderThickness="1" Name="border3" Width="50" Intersoft:DockPanel.Dock="Left">
<Intersoft:UXButton Name="uXButton1" Width="24" Height="24" CornerRadius="12" Content="<" FontWeight="Bold" />
</Border> |
- Repeat step number 6 to perform the same button with Content property set to < inside the fourth Border.
XAML |
Copy Code
|
<Border BorderBrush="Silver" BorderThickness="1" Name="border4" Width="50" Intersoft:DockPanel.Dock="Right">
<Intersoft:UXButton Content=">" CornerRadius="12" FontWeight="Bold" Height="24" Name="uXButton2" Width="24" />
</Border> |
- Add a UXItemsControl to handle more than one component inside a Border.
Properties |
Value |
Orientation |
Horizontal |
HorizontalAlignment |
Center |
VerticalAlignment |
Center |
- Add FieldLabel and UXSeparator inside the UXItemsControl based on the steps below.
Set the Header property of the first FieldLabel to Artist.
Set the Text property of the first UXTextBox to Sarah Brightman.
XAML |
Copy Code
|
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Intersoft:FieldLabel Header="Artist" Name="fieldLabel1">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox1" Text="Sarah Brightman" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
</Intersoft:UXItemsControl> |
Set the second UXSeparator Width property to 3 and Height property to 12.
XAML |
Copy Code
|
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
...
<Intersoft:UXSeparator Name="uXSeparator1" Orientation="Vertical" Width="3" Height="12" />
</Intersoft:UXItemsControl>\ |
Set the Header property of the second FieldLabel to Year.
Set the Text property of the second UXTextBox to 2009.
XAML |
Copy Code
|
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
...
<Intersoft:FieldLabel Header="Year" Name="fieldLabel2">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox2" Text="2009" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
</Intersoft:UXItemsControl>\ |
Set the second UXSeparator Width property to 3 and Height property to 12.
XAML |
Copy Code
|
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
...
<Intersoft:UXSeparator Name="uXSeparator2" Width="3" Height="12" Orientation="Vertical" />
</Intersoft:UXItemsControl> |
Set the Header property of the third FieldLabel to Genre.
Set the Text property of the third UXTextBox to Vocal.
XAML |
Copy Code
|
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
...
<Intersoft:FieldLabel Header="Genre" Name="fieldLabel3">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox3" Text="Vocal" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
</Intersoft:UXItemsControl> |
This would the the final code inside the UXItemsControl.
XAML |
Copy Code
|
<Border BorderBrush="Silver" BorderThickness="1" Height="50" Name="border2" Intersoft:DockPanel.Dock="Bottom">
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Intersoft:FieldLabel Header="Artist" Name="fieldLabel1">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox1" Text="Sarah Brightman" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
<Intersoft:UXSeparator Name="uXSeparator1" Orientation="Vertical" Width="3" Height="12" />
<Intersoft:FieldLabel Header="Year" Name="fieldLabel2">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox2" Text="2009" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
<Intersoft:UXSeparator Name="uXSeparator2" Width="3" Height="12" Orientation="Vertical" />
<Intersoft:FieldLabel Header="Genre" Name="fieldLabel3">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox3" Text="Vocal" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
</Intersoft:UXItemsControl>
</Border> |
- Add an ImageLoader inside the fifth Border. Reset all layout, set the ImageSource property to the file you just put inside the project, in my case im using 1.jpg and the Stretch property to Uniform.
XAML |
Copy Code
|
<Border BorderBrush="Silver" BorderThickness="1" Name="border5" Intersoft:DockPanel.IsFillElement="True">
<Intersoft:ImageLoader Name="imageLoader1" ImageSource="/DockPanel;component/Assets/Images/1.jpg" />
</Border> |
- Run the project, it will shown a final result like the image down below.
Complete Code Listing
This section lists the complete code used in this walkthrough.
MainPage.xaml
XAML |
Copy Code
|
<Intersoft:UXPage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:Intersoft="http://intersoft.clientui.com/schemas"
x:Class="DockPanel.MainPage"
Title="MainPage Page"
d:DesignWidth="640" d:DesignHeight="480">
<Grid x:Name="LayoutRoot">
<Intersoft:DockPanel Name="dockPanel1" FillChildMode="Custom">
<Border BorderBrush="Silver" BorderThickness="1" Height="50" Name="border1" Intersoft:DockPanel.Dock="Top">
<TextBlock Height="23" Name="textBlock1" Text="Sarah Brightman : Live in Vienna" FontSize="16" HorizontalAlignment="Center" />
</Border>
<Border BorderBrush="Silver" BorderThickness="1" Height="50" Name="border2" Intersoft:DockPanel.Dock="Bottom">
<Intersoft:UXItemsControl Name="uXItemsControl1" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Intersoft:FieldLabel Header="Artist" Name="fieldLabel1">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox1" Text="Sarah Brightman" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
<Intersoft:UXSeparator Name="uXSeparator1" Orientation="Vertical" Width="3" Height="12" />
<Intersoft:FieldLabel Header="Year" Name="fieldLabel2">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox2" Text="2009" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
<Intersoft:UXSeparator Name="uXSeparator2" Width="3" Height="12" Orientation="Vertical" />
<Intersoft:FieldLabel Header="Genre" Name="fieldLabel3">
<Intersoft:UXTextBox HorizontalAlignment="Left" Name="uXTextBox3" Text="Vocal" VerticalAlignment="Top" />
</Intersoft:FieldLabel>
</Intersoft:UXItemsControl>
</Border>
<Border BorderBrush="Silver" BorderThickness="1" Name="border3" Width="50" Intersoft:DockPanel.Dock="Left">
<Intersoft:UXButton Name="uXButton1" Width="24" Height="24" CornerRadius="12" Content="<" FontWeight="Bold" />
</Border>
<Border BorderBrush="Silver" BorderThickness="1" Name="border4" Width="50" Intersoft:DockPanel.Dock="Right">
<Intersoft:UXButton Content=">" CornerRadius="12" FontWeight="Bold" Height="24" Name="uXButton2" Width="24" />
</Border>
<Border BorderBrush="Silver" BorderThickness="1" Name="border5" Intersoft:DockPanel.IsFillElement="True">
<Intersoft:ImageLoader Name="imageLoader1" ImageSource="/DockPanel;component/Assets/Images/1.jpg" />
</Border>
</Intersoft:DockPanel>
</Grid>
</Intersoft:UXPage> |
See Also