Introduction

ListPicker is a new control in the Silverlight Toolkit for Windows Phone. It is for user's to choose another item like Combobox but ListPicker has more features than a Combobox. When you have little item about 1->4 it'll show data as a Combobox and if more item Listpicker will show data as a ListBox.

In this article I will talk about Listpicker in Windows Phone.

Fundamental

First, you must install Silverlight tool for Windows Phone . you can download it here http://silverlight.codeplex.com/releases/view/71550

Now we're creating Windows Phone Application Project.

Listpicker in Windows Phone

Next, we right click on References -> choose Add Refrences -> choose Microsoft.Phone.Controls.Toolkit :

Listpicker in Windows Phone

Then we go to MainPage.xaml and built a sample User Interface but after that we declare

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

To use Control.

  • Now we add some Control to MainPage, they're TextBlock,TextBox and ListPicker:

    Listpicker in Windows Phone
  • To Use ListPicker we must Define ItemTemplate and FullModeItemTemplate :

    <phone:PhoneApplicationPage.Resources>

    <DataTemplate x:Name="lpkItemTemplate">

    <TextBlock Text="{Binding Country}" />

    </DataTemplate>

    <DataTemplate x:Name="lpkFullItemTemplate">

    <TextBlock Text="{Binding Country}" />

    </DataTemplate>

    </phone:PhoneApplicationPage.Resources>

Full XAML Code :

<phone:PhoneApplicationPage

x:Class="ListPickerDemo.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

FontFamily="{StaticResource PhoneFontFamilyNormal}"

FontSize="{StaticResource PhoneFontSizeNormal}"

Foreground="{StaticResource PhoneForegroundBrush}"

SupportedOrientations="Portrait" Orientation="Portrait"

shell:SystemTray.IsVisible="True">

<phone:PhoneApplicationPage.Resources>

<DataTemplate x:Name="lpkItemTemplate">

<TextBlock Text="{Binding Country}" />

</DataTemplate>

<DataTemplate x:Name="lpkFullItemTemplate">

<TextBlock Text="{Binding Country}" />

</DataTemplate>

</phone:PhoneApplicationPage.Resources>

<!--LayoutRoot is the root grid where all page content is placed-->

<Grid x:Name="LayoutRoot" Background="Transparent">

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*"/>

</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">

<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>

<TextBlock x:Name="PageTitle" Text="ListPicker" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

</StackPanel>

<!--ContentPanel - place additional content here-->

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="Auto"/>

<RowDefinition Height="Auto"/>

<RowDefinition Height="Auto"/>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*"/>

</Grid.RowDefinitions>

<TextBlock Text="Name" Margin="14,0,0,0"/>

<TextBox Grid.Row="1" Name="txtName"/>

<TextBlock Text="Ages " Grid.Row="2" Margin="14,0,0,0"/>

<TextBox Name="txtAge" Grid.Row="3"/>

<TextBlock Text="Country" Grid.Row="4" Margin="14,0,0,0" />

<toolkit:ListPicker FullModeItemTemplate="{Binding lpkFullItemTemplate}"

Grid.Row="5" ItemTemplate="{Binding lpkItemTemplate}"

x:Name="lpkCountry"/>

<Button Content="Submit" Grid.Row="5" Height="72" HorizontalAlignment="Left" Margin="284,87,0,0" Name="btnSubmit" Click="btnSubmit_Click"
VerticalAlignment="Top" Width="160" />

</Grid>

</Grid>

</phone:PhoneApplicationPage>

And Now we go to MainPage.xaml.cs and create a Array String as a sample Data, and add is for ListPicker ItemSource Properties:

C# Code :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using Microsoft.Phone.Controls;

namespace ListPickerDemo

{

public partial class MainPage : PhoneApplicationPage

{

String[] Country = { "Viet Nam","Japan",

"China","USA",

"Poland","Brazil",

"Singapore","Philipin","Malaysia"};

public MainPage()

{

InitializeComponent();

this.lpkCountry.ItemsSource = Country;

}

private void btnSubmit_Click(object sender, RoutedEventArgs e)

{

String _Content = String.Format("Name: {0} \nAges: {1}\nCountry: {2}",

txtName.Text,txtAge.Text,lpkCountry.SelectedItem);

MessageBox.Show(_Content);

}

}

}

Now We Run Apps to view Resuilt :

  • When you have a little Country

    Listpicker in Windows Phone

  • And More Contry (FullModeItemTamplate will run):

    Listpicker in Windows Phone

  • And when I Submit :

    Listpicker in Windows Phone