Para começar, precisamos de instalar o Windows Phone SDK 7.1, o qual vem com um IDE gratuito (Visual Studio Express) e um emulador de Windows Phone, o qual nos permite testar as nossas aplicações antes de as instalar num dispositivo móvel baseado em Windows Phone.
Neste exemplo foi usado o Visual Studio 2010 para o desenvolvimento, mas, claro, o Windows Phone SDK 7.1 precisa na mesma de ser instalado.
Modelo de Execução do Windows Phone
Antes de começar o desenvolvimento da nossa primeira app, apenas algumas palavras sobre o modelo de execução do Windows Phone:- Apenas uma App pode correr num dado momento em foreground;
- Outras Apps em execução são colocadas pelo sistema operativo (SO) num estado dormente (dormant state);
- Quando a memória do dispositivo não é suficiente, o SO começa a terminar aplicações que estejam no estado dormente.
- Através da sua framework de programação, as aplicações podem gerir o seu estado quando são ativadas ou desativadas. Isto pode ser usado para dar ao utilizador a impressão de que uma aplicação esteve sempre a correr, mesmo quando ela é parada e mais tarde reativada.
Criar um novo Projeto Windows Phone
No Visual Studio (ou Visual Studio Express), criar um novo projeto com o template para "Silverlight for Windows Phone", a tipo Windows Phone Application:Depois, selecionar a versão do Sistema Operativo:
O Visual studio cria a arquitetura da aplicação, de apenas uma página:
As aplicações Windows Phone são feitas de descrições de páginas da User Interface (UI) usando Silverlight (Silverlight é um subconjunto do XAML, a linguagem baseada em XML para descrição de UIs, criada pela Microsoft), e ficheiros de code behind em C# (embora também possa ser usado VB.Net).
No centro da imagem acima, podemos ver duas vistas do ficheiro MainPage.XAML, que é a descrição da UI da nossa aplicação. As duas vistas são, à esquerda, uma vista gráfica da página e, à direita, a descrição XAML. Pode-se modificar qualquer uma das duas vistas, sendo as modificações automaticamente refletidas na outra vista.
Através de drag and drop de controlos a partir da toolbox, para a vista gráfica da página XAML, podemos compor a UI da nossa aplicação:
Vamos fazer uma app para converter graus Farenheith em graus Celsius, pelo que arrastamos uns TextBlocks, uma TextBox e um Button:
O XAML equivalente é:
<phone:PhoneApplicationPage
x:Class="MinhaPhoneApp.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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--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 Orientation="Vertical" x:Name="TitlePanel" Margin="12,17,0,28" Grid.ColumnSpan="7">
<TextBlock x:Name="ApplicationTitle" Text="Minha Phone App" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="ºF --> ºC" TextAlignment="Center" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<TextBlock Height="50" HorizontalAlignment="Left" Margin="17,37,0,0" Name="textBlock1" Text="Temperatura ºF : " VerticalAlignment="Top" Style="{StaticResource PhoneTextLargeStyle}" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="236,25,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="220" TextChanged="textBox1_TextChanged" />
<Button Content="Converter temperatura" Height="72" HorizontalAlignment="Left" Margin="57,117,0,0" Name="button1" Click="button1_Click" VerticalAlignment="Top" Width="344" />
<TextBlock Height="173" HorizontalAlignment="Left" Margin="57,209,0,0" Name="textBlock2" Text="TextBlock" VerticalAlignment="Top" Width="344" Style="{StaticResource PhoneTextTitle1Style}"/>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
Note-se o código XAML para o botão:
<Button Content="Converter temperatura" Height="72" HorizontalAlignment="Left"
Margin="57,117,0,0" Name="button1" Click="button1_Click"
VerticalAlignment="Top" Width="344" />
O event handler que irá correr quando o botão é clicado é button1_Click.
Precisamos agora de fornecer o código para o event handler:
Aqui está o code behind completo para MainPage.XAML.cs:
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
namespace MinhaPhoneApp
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
int fahrenheit = 0;
if (Int32.TryParse(textBox1.Text, out fahrenheit))
{
// C = 5 * ((F-32)/9)
decimal celsius = 5 * (((decimal)fahrenheit - 32) / 9);
textBlock2.TextAlignment = TextAlignment.Center;
textBlock2.Text = Decimal.Round(celsius, 0).ToString() + "º C";
}
else
{
textBlock2.Text = "Dados inválidos!!!";
}
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
}
}
}
Depois, podemos testar a nossa App usando o emulador de dispositivo Windows Phone:
Sem comentários:
Enviar um comentário