SlideShare uma empresa Scribd logo
1 de 85
Felipe Pimentel


   Consultor e Arquiteto
   - ASP.NET 4.0
   - Windows Phone 7



@FelipePimentell



Felipe Pimentel


felipe.pimentel@
invistatecnologia.com
Introdução ao
Windows phone 7 “Mango”
Visão geral do Windows Phone
      Nova plataforma mobile da Microsoft.
      Foco no usuário final
      Nova interface – Metro
          Interface também adotada no Windows 8.
      Utilização de HUBS
      Desenvolvimento .NET
      Windows Phone Marketplace.
Hardware do Windows Phone
    Padronização junto aos fabricantes.
    Mínimo: 256 MB RAM e 8 GB de storage
    Botões – Back (Voltar) , Start (Iniciar) e Search (Procurar)
    Tela – Multitouch capacitivo (800x480)
    Câmera – mínimo de 5 megapixels + flash
    Sensores e serviço
          Wi-fi
          Accelerometer
          Compass (Bússola)
          Location (GPS)
          Speech (Reconhecimento de voz)
          Vibration
          Push Notifications
Arquitetura do Windows Phone
Ciclo de Vida de Desenvolvimento
VISUAL STUDIO
O que é o VISUAL STUDIO?
     Um conjunto de ferramentas de
      desenvolvimento que permite aos
      desenvolvedores de software resolver
      problemas complexos e criar soluções
      inovadoras.
     Baseia-se em três pilares principais:
       Desenvolvimento rápido de aplicativos
       Colaboração eficaz em equipe
       Experiências de usuário inovadoras
O que posso fazer com o VS?
    • Desenvolver Web Sites ASP.NET, AJAX.NET e Silverlight.
    • Impressionar com mídia e gráficos desenvolvidos com
      o Windows Presentation Foundation.
    • Desenvolver aplicativos que estendem funções do
      Office.
    • Desenvolver aplicações para Windows Phone.
    • Desenvolver jogos.
    • Desenvolver soluções de integração coorporativa com
      Windows Communication Foundation e o Windows
      Workflow Foundation e muito mais...
Criando uma Solução
Criando a partir de templates
Interface Design
Interface Programação
Lógica de Programação
Estruturas de controle de fluxo
     if ... else
        Comando condicional: executa um bloco de comandos se uma
         condição for verdadeira.
        A cláusula else (condição falsa) é opcional.


     if (idade >= 18)
     {
          Response.Write("Autorizado.");
          Response.Write("Sua idade é: " + idade);
     }
     else if (idade > 15 && idade < 18)
     {
          Response.Write("Somente com os pais.");
          Response.Write("Menor de 18 anos.");
     }
     else
     {
          Response.Write("Não autorizado.");
          Response.Write("Menor de 15 anos.");
     }
Estruturas de controle de fluxo
     switch … case
       Estrutura de decisão que seleciona um comando com base no
        valor de uma variável.
       A cláusula default é opcional.

      switch (sexo)
      {
          case "masculino":
              Response.Write("Homem");
              break;
          case "feminino":
              Response.Write("Mulher");
              break;
          default:
              Response.Write("Não informado");
              break;
      }
Estruturas de Repetição
     for
       Estrutura de repetição composta por três
        expressões:
        Inicialização.
        Condição de parada.
        Atualização.
            for (int i = 0; i < 10; i++)
            {
                Response.Write(i);
                Response.Write("<br />");
            }
Estruturas de Repetição
    while
      Estrutura de repetição que realiza as operações
       indicadas enquanto a condição especificada for
       verdadeira.
         int i = 0;
         while(i < 10)
         {
             Response.Write(i);
             Response.Write("<br />");
             i++;
         }
Estruturas de Repetição
    do ... while
      Estrutura de repetição semelhante à anterior, porém as
       condições são verificadas ao final da execução.
      As operações especificadas são executadas pelo menos uma vez.
      Necessita do caractere “;” ao final da estrutura.



       int i = 0;
       do
       {
           Response.Write(i);
           Response.Write("<br />");
           i++;
       }
       while (i < 10);
Conversão DE TIPOS
 // Exemplo I                  // Exemplo IV
 string s = "123";             string s = "valor";
 int i = s;                    int i = Convert.ToInt32(s);
 Response.Write(i);            Response.Write(i);




 // Exemplo II
                               // Exemplo V
 string s = "123";
 int i = Convert.ToInt32(s);   string s = "valor";
 Response.Write(i);            int i = 0;
                               if (int.TryParse(s, out i))
                               {
                                    Response.Write(i);
                               }
                               else
 // Exemplo III
 string s = "123";             {
 int i = int.Parse(s);              Response.Write("inválido");
 Response.Write(i);            }
Estruturas de Repetição
    foreach
      Esta estrutura de repetição é uma variação
       do for.
      Especifica uma variável auxiliar e a coleção
       ou array cujos elementos serão percorridos.

     int[] i = { 1, 3, 5, 7, 9 };
     foreach (int j in i)
     {
         Response.Write(j);
         Response.Write("<br />");
     }
Namespaces
    • Declarando um namespace
    namespace Cadastro {
       public class Cliente {}
    }


    • Namespaces em cadeia
    namespace Cadastro.Telas {
       public class TelaCliente {}
    }

    • Instrução Using
    using   System;
    using   System.Data;
    using   Cadastro.Telas;
    using   Pessoa = Cadastro.Cliente;
Introdução ao xaml
O que é XAML?
    • É uma linguagem de marcação.
    • Tecnologia de criação de interface do .NET
      Framework.
    • Disponível desde o .NET Framework 3.0
    • Criação de interface para as plataformas:
       –   WPF (Windows Presentation Foundation)
       –   Silverlight para Web
       –   Silverlight para Windows Phone
       –   Windows 8
Poderes e limitações do XAML
    •   É uma linguagem declarativa.
    •   Mais usada para criar e instanciar objetos.
    •   Templates
    •   Data Binding
    •   Animações/Efeitos de Transição
    •   Há coisas que só podem ser feitas no
        XAML, outras apenas no código e outras em
        ambas.
Sintaxe do XAML
• Elementos do objeto
   – Um elemento do objeto declara a instância de um tipo
     (componente).
   – Para iniciar o objeto sempre começa com “<”, seguido do nome
     do objeto e finaliza com “>”.
   – Para fechar um objeto com conteúdo, começa com “</”.
   – Para fechar um objeto sem conteúdo, termina com “/>”.



        <StackPanel>
             <Button Content="Click Me"/>
        </StackPanel>
Sintaxe do XAML
   • Atributos (Propriedades)
       – Propriedades podem ser declaradas como
         atributos no XAML.

   <Button Background="Blue" Foreground="Red" Content="This is a button"/>
Sintaxe do XAML
    • Sintaxe de propriedade do elemento
       – Algumas propriedade precisam ser declaradas
         como elemento de objeto.


      <Button>
          <Button.Background>
               <SolidColorBrush Color="Blue"/>
          </Button.Background>
          <Button.Foreground>
               <SolidColorBrush Color="Red"/>
          </Button.Foreground>
          <Button.Content>
               This is a button
          </Button.Content>
      </Button>
Sintaxe do XAML
   • Sintaxe de propriedade do elemento
     – Algumas propriedade precisam ser declaradas
       como elemento de objeto.

     <Button>
         <Button.Background>
              <SolidColorBrush Color="Blue"/>
         </Button.Background>
         <Button.Foreground>
              <SolidColorBrush Color="Red"/>
         </Button.Foreground>
         <Button.Content>
              This is a button
         </Button.Content>
     </Button>
Elementos Contêiner
   • Habilita criação complexas de layouts.
   • Facilita questão diversas do layout como
     posicionamento e redimensionamento.
   • Todos elementos de objeto precisam estar em
     pelo menos um Elemento Contêiner.
   • Alguns Elementos Contêiner são:
     – Grid
     – Canvas
     – StackPanel.
Elementos Contêiner
   • Canvas
      – Define uma área na qual os
      Elementos filhos podem definir
      coordenadas relativas a essa área.
      - Mais fácil de trabalhar com
      Posições X e Y.


   <Canvas Width="640" Height="480" Background="White">
          <Rectangle Canvas.Left="30" Canvas.Top="30" Fill="red"
                    Width="200" Height="200" />
   </Canvas>
Elementos Contêiner
   • Grid
     – Define uma área
       flexível que consiste
       em colunas e
       linhas..
                               <Grid Width="400" Height="300">
                                    <Grid.ColumnDefinitions>
                                    …
                                    </Grid.ColumnDefinitions>

                                   <Grid.RwDefinitions>
                                   ...
                                   </Grid.RowDefinitions>

                                   //Restante dos elementos

                               </Grid>
Elementos Contêiner
• Grid
Elementos Contêiner
   • StackPanel
       – Organiza os elementos filhos em uma
         única linha que pode ser orientada
         horizontalmente ou verticalmente.




   <StackPanel Margin="20">
            <Rectangle Fill="Red" Width="50" Height="50" Margin="5" />
            <Rectangle Fill="Blue" Width="50" Height="50" Margin="5" />
            <Rectangle Fill="Green" Width="50" Height="50" Margin="5" />
            <Rectangle Fill="Purple" Width="50" Height="50" Margin="5" />
   </StackPanel>
Data binding
Data Binding
• Disponibiliza uma forma simples para exibir
  dados no layout.
• Estabelece uma conexão entre o UI e um
  objeto de dados.
• Mudanças feito no UI ou diretamente no
  objeto, são refletidos em ambos lados.
  – Exemplo: Um usuário edita um TextBlock. O valor
    atribuido a esse elemento é automaticamente
    atualizado no objeto de origem também.
Data Binding
    • O Binding precisa especificar a origem e
      o destino.
Data Binding
 • Exemplo:
   XAML
    <TextBox x:Name="MyTextBox" Text="Text"
    Foreground="{Binding Brush1}"/>


   Código

    MyColors textcolor = new MyColors();
    textcolor.Brush1 = new SolidColorBrush(Colors.Red);
    MyTextBox.DataContext = textcolor;
Data Binding
    • Formas de Binding:
       – One Way: Padrão, as alterações no objeto refletem no
         UI, mas o inverso não acontece.
       – Two Way: Alterações feitas no objeto e no UI refletem
         em ambos lados.
       – One Time: Alterações feitas em ambos lados não são
         refletidas. Os dados são apenas enviados uma vez ao UI.
Data Binding
    • Exemplo:
     XAML
     <TextBox x:Name="MyTextBox" Text="Text"
     Foreground="{Binding Brush1, Mode=TwoWay}"/>


     Código

     MyColors textcolor = new MyColors();
     textcolor.Brush1 = new SolidColorBrush(Colors.Red);
     MyTextBox.DataContext = textcolor;
PANORAMA E PIVOT
Panorama
    • Oferece uma experiência única de ver controles, dados e serviços
      usando uma tela horizontal.
    • Não fica limitado ao tamanho da tela do Windows Phone.
    • O usuário tem a liberdade de navegar para esquerda ou direita.
Panorama
Panorama
    • PanoramaItem é o controle secundário que
      serve como contêiner para o conteúdo de
      um Panorama.
Pivot
   • Uma forma rápida de gerenciar layout ou páginas.
   • O usuário tem a liberdade de navegar para esquerda ou
     direita, mas não tem um pré-visualização da parte direita.
Pivot
Pivot
• PivotItem é o controle secundário que serve como contêiner para o
  conteúdo de um Pivot.




                     Também é possível navegar tocando
                          nos títulos das páginas
Acelerometro
Camera
Photo
GeoCoordinateWatcher
WebBrowserTask
SearchTask
SmsComposeTask
PhoneNumberChooserTask
MediaPlayerLauncher
Orientation
CICLO DE VIDA
Ciclo de Vida
                              running




                  activated             deactivated




     Tombstoned               dormant
Ciclo de Vida
   • OnNavigatedTo
     – Chamado quando o usuário navega para a página.

   • OnNavigatedFrom
     – Chamado quando o usuário sai da página.
Ciclo de Vida
    • Desactived
       – Chamado quando o usuário:
           • Pressiona o botão Start
           • Muda para outro aplicativo.

    • Actived
       – Chamado quando o aplicativo retorna do estado:
           • Dormant.
           • Tombstoned.
Ciclo de Vida
     • Launching
        – Chamado quando o usuário:
            • Abre o programa pela lista de aplicativos
            • Abre o programa via Tile.
            • Recebe uma notificação pedindo para abrir o aplicativo e ele aceita.
     • Closing
        – Chamado quando o usuário aperta o botão “Back” do
          Windows Phone para sair do aplicativo.
Quando o
usuário
                 Ciclo de Vida   Quando o
                                 aplicativo é
aperta em                        aberto via
“Back” saindo                    lista, Tite ou
do aplicativo.                   Notification

                                  Quando o
                                  usuário
Quando o                          aperta em
usuário volta                     Start ou
ao aplicativo                     seleciona
apertando                         outro
“Back” ou                         aplicativo
quando                            aberto.
retorna de
Tombstoned
ou Dormant.
ISOLATED STORAGE
Isolated Storage
   • Permite a armazenar dados no próprio
     Windows Phone.
   • Toda ação de armazenamento e leitura
     de dados locais está restrita ao Isolated
     Storage.
   • É mais seguro, reduz as chances de
     acessos não autorizados e erros.
Opções de armazenamento

      • É possível armazenar:
        – Configurações: Gravar dados como
          key/value (chave/valor) usando a classe
          IsolatedStorageSettings.
        – Arquivos e Pastas: Gravar arquivos e pastas
          usando a classe IsolatedStorageFile.
        – Dados relacionais: Gravar dados em um
          banco de dados local usando LINQ to SQL.
Opções de armazenamento
   • É possível armazenar:
     – Chave/Valor: Gravar dados com o par
       key/value usando a classe
       IsolatedStorageSettings.
     – Arquivos e Pastas: Gravar arquivos e pastas
       usando a classe IsolatedStorageFile.
     – Dados relacionais: Gravar dados em um
       banco de dados local usando LINQ to SQL.
Opções de armazenamento
Opções de armazenamento
• Chave/Valor (IsolatedStorageSettings):
   Código

   string NomeUsuario;

   if( IsolatedStorageSettings.ApplicationSettings.TryGetValue<string>
   ("NomeUsuario", out NomeUsuario))
   {

   IsolatedStorageSettings.ApplicationSettings.Add("NomeUsuario",
   "José");

   }
Opções de armazenamento
• Arquivos/Pastas (IsolatedStorageSettings):
   Código

   var store = IsolatedStorageFile.GetUserStoreForApplication()

   store.CreateDirectory("MyApp1");
   IsolatedStorageFileStream rootFile = store.CreateFile("InTheRoot.txt");
   rootFile.Close();

   if (store.FileExists(filePath)) {
               StreamWriter sw = new StreamWriter(
   store.OpenFile( "InTheRoot.txt”, FileMode.Open,        . .
   FileAccess.Write));
   }
Opções de armazenamento
• LINQ to SQL:
  Código

  var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems select todo;

  ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);
SERVIÇOS?
Silverlight

WINDOWS PHONE 7

Mais conteúdo relacionado

Mais procurados

Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Aprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCDAprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCDAfonso Gomes
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0César Augusto Pessôa
 
Windows Universal App XAML e WPF
Windows Universal App XAML e WPFWindows Universal App XAML e WPF
Windows Universal App XAML e WPFLauro Oliveira
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
Aula 25 e 26 formulário acessibilidade
Aula 25 e 26 formulário acessibilidadeAula 25 e 26 formulário acessibilidade
Aula 25 e 26 formulário acessibilidadeJolvani Morgan
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETLeonardo Melo Santos
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NETFabiano Roman Beraldi
 

Mais procurados (20)

Como Implementar Um Menu Ribbon em C#
Como Implementar Um Menu Ribbon em C#Como Implementar Um Menu Ribbon em C#
Como Implementar Um Menu Ribbon em C#
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Aprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCDAprender Javascript e jQuery (UFCD
Aprender Javascript e jQuery (UFCD
 
JavaScript
JavaScriptJavaScript
JavaScript
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Windows Universal App XAML e WPF
Windows Universal App XAML e WPFWindows Universal App XAML e WPF
Windows Universal App XAML e WPF
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Excel VBA: Aula 8
Excel VBA: Aula 8Excel VBA: Aula 8
Excel VBA: Aula 8
 
J530 8 cmp
J530 8 cmpJ530 8 cmp
J530 8 cmp
 
Ajax como comecar
Ajax como comecarAjax como comecar
Ajax como comecar
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Aula 25 e 26 formulário acessibilidade
Aula 25 e 26 formulário acessibilidadeAula 25 e 26 formulário acessibilidade
Aula 25 e 26 formulário acessibilidade
 
Falando "Postgrês"
Falando "Postgrês"Falando "Postgrês"
Falando "Postgrês"
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NET
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
Boas Práticas em jQuery
Boas Práticas em jQueryBoas Práticas em jQuery
Boas Práticas em jQuery
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 

Destaque

Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Felipe Pimentel
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDWillians De Paula Pereira
 
Windows Phone 7 para um público não TI
Windows Phone 7 para um público não TIWindows Phone 7 para um público não TI
Windows Phone 7 para um público não TIFelipe Pimentel
 
Parceria DotNetArchitects PE com TWM
Parceria DotNetArchitects PE com  TWM Parceria DotNetArchitects PE com  TWM
Parceria DotNetArchitects PE com TWM Felipe Pimentel
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)Felipe Pimentel
 

Destaque (7)

Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDD
 
MVVM
MVVMMVVM
MVVM
 
Windows Phone 7 para um público não TI
Windows Phone 7 para um público não TIWindows Phone 7 para um público não TI
Windows Phone 7 para um público não TI
 
Mvc 3 & razor
Mvc 3 & razorMvc 3 & razor
Mvc 3 & razor
 
Parceria DotNetArchitects PE com TWM
Parceria DotNetArchitects PE com  TWM Parceria DotNetArchitects PE com  TWM
Parceria DotNetArchitects PE com TWM
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)
 

Semelhante a Desenvolvendo com Silverlight para WP7 Mango [Update]

Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETphilipsoares
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com JavaLuiz Ricardo Silva
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated QueryDalton Valadares
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com AjaxAdler Medrado
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stackSidney Roberto
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoMarcius Brandão
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EELoiane Groner
 

Semelhante a Desenvolvendo com Silverlight para WP7 Mango [Update] (20)

Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf
 
Programação "Estruturada" com Java
Programação "Estruturada" com JavaProgramação "Estruturada" com Java
Programação "Estruturada" com Java
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Aula1
Aula1Aula1
Aula1
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da Dissertacao
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Programação asp
Programação aspProgramação asp
Programação asp
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Realtime com node.js e socket.io
Realtime com node.js e socket.ioRealtime com node.js e socket.io
Realtime com node.js e socket.io
 

Mais de Felipe Pimentel

Proposta planos digaonde
Proposta planos digaondeProposta planos digaonde
Proposta planos digaondeFelipe Pimentel
 
[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0Felipe Pimentel
 
[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010Felipe Pimentel
 
[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2Felipe Pimentel
 
[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4Felipe Pimentel
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4Felipe Pimentel
 
ASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCFelipe Pimentel
 

Mais de Felipe Pimentel (9)

Proposta planos digaonde
Proposta planos digaondeProposta planos digaonde
Proposta planos digaonde
 
[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0
 
[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010
 
[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2[CLPE] Novidades do Asp.net mvc 2
[CLPE] Novidades do Asp.net mvc 2
 
[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4
 
ASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVC
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7
 

Desenvolvendo com Silverlight para WP7 Mango [Update]

  • 1.
  • 2. Felipe Pimentel Consultor e Arquiteto - ASP.NET 4.0 - Windows Phone 7 @FelipePimentell Felipe Pimentel felipe.pimentel@ invistatecnologia.com
  • 3.
  • 5. Visão geral do Windows Phone  Nova plataforma mobile da Microsoft.  Foco no usuário final  Nova interface – Metro  Interface também adotada no Windows 8.  Utilização de HUBS  Desenvolvimento .NET  Windows Phone Marketplace.
  • 6. Hardware do Windows Phone Padronização junto aos fabricantes. Mínimo: 256 MB RAM e 8 GB de storage Botões – Back (Voltar) , Start (Iniciar) e Search (Procurar) Tela – Multitouch capacitivo (800x480) Câmera – mínimo de 5 megapixels + flash Sensores e serviço  Wi-fi  Accelerometer  Compass (Bússola)  Location (GPS)  Speech (Reconhecimento de voz)  Vibration  Push Notifications
  • 8. Ciclo de Vida de Desenvolvimento
  • 10. O que é o VISUAL STUDIO? Um conjunto de ferramentas de desenvolvimento que permite aos desenvolvedores de software resolver problemas complexos e criar soluções inovadoras. Baseia-se em três pilares principais:  Desenvolvimento rápido de aplicativos  Colaboração eficaz em equipe  Experiências de usuário inovadoras
  • 11. O que posso fazer com o VS? • Desenvolver Web Sites ASP.NET, AJAX.NET e Silverlight. • Impressionar com mídia e gráficos desenvolvidos com o Windows Presentation Foundation. • Desenvolver aplicativos que estendem funções do Office. • Desenvolver aplicações para Windows Phone. • Desenvolver jogos. • Desenvolver soluções de integração coorporativa com Windows Communication Foundation e o Windows Workflow Foundation e muito mais...
  • 13. Criando a partir de templates
  • 17. Estruturas de controle de fluxo if ... else  Comando condicional: executa um bloco de comandos se uma condição for verdadeira.  A cláusula else (condição falsa) é opcional. if (idade >= 18) { Response.Write("Autorizado."); Response.Write("Sua idade é: " + idade); } else if (idade > 15 && idade < 18) { Response.Write("Somente com os pais."); Response.Write("Menor de 18 anos."); } else { Response.Write("Não autorizado."); Response.Write("Menor de 15 anos."); }
  • 18. Estruturas de controle de fluxo switch … case  Estrutura de decisão que seleciona um comando com base no valor de uma variável.  A cláusula default é opcional. switch (sexo) { case "masculino": Response.Write("Homem"); break; case "feminino": Response.Write("Mulher"); break; default: Response.Write("Não informado"); break; }
  • 19. Estruturas de Repetição for  Estrutura de repetição composta por três expressões: Inicialização. Condição de parada. Atualização. for (int i = 0; i < 10; i++) { Response.Write(i); Response.Write("<br />"); }
  • 20. Estruturas de Repetição while  Estrutura de repetição que realiza as operações indicadas enquanto a condição especificada for verdadeira. int i = 0; while(i < 10) { Response.Write(i); Response.Write("<br />"); i++; }
  • 21. Estruturas de Repetição do ... while  Estrutura de repetição semelhante à anterior, porém as condições são verificadas ao final da execução.  As operações especificadas são executadas pelo menos uma vez.  Necessita do caractere “;” ao final da estrutura. int i = 0; do { Response.Write(i); Response.Write("<br />"); i++; } while (i < 10);
  • 22. Conversão DE TIPOS // Exemplo I // Exemplo IV string s = "123"; string s = "valor"; int i = s; int i = Convert.ToInt32(s); Response.Write(i); Response.Write(i); // Exemplo II // Exemplo V string s = "123"; int i = Convert.ToInt32(s); string s = "valor"; Response.Write(i); int i = 0; if (int.TryParse(s, out i)) { Response.Write(i); } else // Exemplo III string s = "123"; { int i = int.Parse(s); Response.Write("inválido"); Response.Write(i); }
  • 23. Estruturas de Repetição foreach  Esta estrutura de repetição é uma variação do for.  Especifica uma variável auxiliar e a coleção ou array cujos elementos serão percorridos. int[] i = { 1, 3, 5, 7, 9 }; foreach (int j in i) { Response.Write(j); Response.Write("<br />"); }
  • 24. Namespaces • Declarando um namespace namespace Cadastro { public class Cliente {} } • Namespaces em cadeia namespace Cadastro.Telas { public class TelaCliente {} } • Instrução Using using System; using System.Data; using Cadastro.Telas; using Pessoa = Cadastro.Cliente;
  • 26. O que é XAML? • É uma linguagem de marcação. • Tecnologia de criação de interface do .NET Framework. • Disponível desde o .NET Framework 3.0 • Criação de interface para as plataformas: – WPF (Windows Presentation Foundation) – Silverlight para Web – Silverlight para Windows Phone – Windows 8
  • 27. Poderes e limitações do XAML • É uma linguagem declarativa. • Mais usada para criar e instanciar objetos. • Templates • Data Binding • Animações/Efeitos de Transição • Há coisas que só podem ser feitas no XAML, outras apenas no código e outras em ambas.
  • 28. Sintaxe do XAML • Elementos do objeto – Um elemento do objeto declara a instância de um tipo (componente). – Para iniciar o objeto sempre começa com “<”, seguido do nome do objeto e finaliza com “>”. – Para fechar um objeto com conteúdo, começa com “</”. – Para fechar um objeto sem conteúdo, termina com “/>”. <StackPanel> <Button Content="Click Me"/> </StackPanel>
  • 29. Sintaxe do XAML • Atributos (Propriedades) – Propriedades podem ser declaradas como atributos no XAML. <Button Background="Blue" Foreground="Red" Content="This is a button"/>
  • 30. Sintaxe do XAML • Sintaxe de propriedade do elemento – Algumas propriedade precisam ser declaradas como elemento de objeto. <Button> <Button.Background> <SolidColorBrush Color="Blue"/> </Button.Background> <Button.Foreground> <SolidColorBrush Color="Red"/> </Button.Foreground> <Button.Content> This is a button </Button.Content> </Button>
  • 31. Sintaxe do XAML • Sintaxe de propriedade do elemento – Algumas propriedade precisam ser declaradas como elemento de objeto. <Button> <Button.Background> <SolidColorBrush Color="Blue"/> </Button.Background> <Button.Foreground> <SolidColorBrush Color="Red"/> </Button.Foreground> <Button.Content> This is a button </Button.Content> </Button>
  • 32. Elementos Contêiner • Habilita criação complexas de layouts. • Facilita questão diversas do layout como posicionamento e redimensionamento. • Todos elementos de objeto precisam estar em pelo menos um Elemento Contêiner. • Alguns Elementos Contêiner são: – Grid – Canvas – StackPanel.
  • 33. Elementos Contêiner • Canvas – Define uma área na qual os Elementos filhos podem definir coordenadas relativas a essa área. - Mais fácil de trabalhar com Posições X e Y. <Canvas Width="640" Height="480" Background="White"> <Rectangle Canvas.Left="30" Canvas.Top="30" Fill="red" Width="200" Height="200" /> </Canvas>
  • 34. Elementos Contêiner • Grid – Define uma área flexível que consiste em colunas e linhas.. <Grid Width="400" Height="300"> <Grid.ColumnDefinitions> … </Grid.ColumnDefinitions> <Grid.RwDefinitions> ... </Grid.RowDefinitions> //Restante dos elementos </Grid>
  • 36. Elementos Contêiner • StackPanel – Organiza os elementos filhos em uma única linha que pode ser orientada horizontalmente ou verticalmente. <StackPanel Margin="20"> <Rectangle Fill="Red" Width="50" Height="50" Margin="5" /> <Rectangle Fill="Blue" Width="50" Height="50" Margin="5" /> <Rectangle Fill="Green" Width="50" Height="50" Margin="5" /> <Rectangle Fill="Purple" Width="50" Height="50" Margin="5" /> </StackPanel>
  • 38. Data Binding • Disponibiliza uma forma simples para exibir dados no layout. • Estabelece uma conexão entre o UI e um objeto de dados. • Mudanças feito no UI ou diretamente no objeto, são refletidos em ambos lados. – Exemplo: Um usuário edita um TextBlock. O valor atribuido a esse elemento é automaticamente atualizado no objeto de origem também.
  • 39. Data Binding • O Binding precisa especificar a origem e o destino.
  • 40. Data Binding • Exemplo: XAML <TextBox x:Name="MyTextBox" Text="Text" Foreground="{Binding Brush1}"/> Código MyColors textcolor = new MyColors(); textcolor.Brush1 = new SolidColorBrush(Colors.Red); MyTextBox.DataContext = textcolor;
  • 41. Data Binding • Formas de Binding: – One Way: Padrão, as alterações no objeto refletem no UI, mas o inverso não acontece. – Two Way: Alterações feitas no objeto e no UI refletem em ambos lados. – One Time: Alterações feitas em ambos lados não são refletidas. Os dados são apenas enviados uma vez ao UI.
  • 42. Data Binding • Exemplo: XAML <TextBox x:Name="MyTextBox" Text="Text" Foreground="{Binding Brush1, Mode=TwoWay}"/> Código MyColors textcolor = new MyColors(); textcolor.Brush1 = new SolidColorBrush(Colors.Red); MyTextBox.DataContext = textcolor;
  • 44. Panorama • Oferece uma experiência única de ver controles, dados e serviços usando uma tela horizontal. • Não fica limitado ao tamanho da tela do Windows Phone. • O usuário tem a liberdade de navegar para esquerda ou direita.
  • 46. Panorama • PanoramaItem é o controle secundário que serve como contêiner para o conteúdo de um Panorama.
  • 47. Pivot • Uma forma rápida de gerenciar layout ou páginas. • O usuário tem a liberdade de navegar para esquerda ou direita, mas não tem um pré-visualização da parte direita.
  • 48. Pivot
  • 49. Pivot • PivotItem é o controle secundário que serve como contêiner para o conteúdo de um Pivot. Também é possível navegar tocando nos títulos das páginas
  • 51.
  • 53.
  • 54. Photo
  • 55.
  • 57.
  • 59.
  • 61.
  • 63.
  • 65.
  • 67.
  • 69.
  • 71. Ciclo de Vida running activated deactivated Tombstoned dormant
  • 72. Ciclo de Vida • OnNavigatedTo – Chamado quando o usuário navega para a página. • OnNavigatedFrom – Chamado quando o usuário sai da página.
  • 73. Ciclo de Vida • Desactived – Chamado quando o usuário: • Pressiona o botão Start • Muda para outro aplicativo. • Actived – Chamado quando o aplicativo retorna do estado: • Dormant. • Tombstoned.
  • 74. Ciclo de Vida • Launching – Chamado quando o usuário: • Abre o programa pela lista de aplicativos • Abre o programa via Tile. • Recebe uma notificação pedindo para abrir o aplicativo e ele aceita. • Closing – Chamado quando o usuário aperta o botão “Back” do Windows Phone para sair do aplicativo.
  • 75. Quando o usuário Ciclo de Vida Quando o aplicativo é aperta em aberto via “Back” saindo lista, Tite ou do aplicativo. Notification Quando o usuário Quando o aperta em usuário volta Start ou ao aplicativo seleciona apertando outro “Back” ou aplicativo quando aberto. retorna de Tombstoned ou Dormant.
  • 77. Isolated Storage • Permite a armazenar dados no próprio Windows Phone. • Toda ação de armazenamento e leitura de dados locais está restrita ao Isolated Storage. • É mais seguro, reduz as chances de acessos não autorizados e erros.
  • 78. Opções de armazenamento • É possível armazenar: – Configurações: Gravar dados como key/value (chave/valor) usando a classe IsolatedStorageSettings. – Arquivos e Pastas: Gravar arquivos e pastas usando a classe IsolatedStorageFile. – Dados relacionais: Gravar dados em um banco de dados local usando LINQ to SQL.
  • 79. Opções de armazenamento • É possível armazenar: – Chave/Valor: Gravar dados com o par key/value usando a classe IsolatedStorageSettings. – Arquivos e Pastas: Gravar arquivos e pastas usando a classe IsolatedStorageFile. – Dados relacionais: Gravar dados em um banco de dados local usando LINQ to SQL.
  • 81. Opções de armazenamento • Chave/Valor (IsolatedStorageSettings): Código string NomeUsuario; if( IsolatedStorageSettings.ApplicationSettings.TryGetValue<string> ("NomeUsuario", out NomeUsuario)) { IsolatedStorageSettings.ApplicationSettings.Add("NomeUsuario", "José"); }
  • 82. Opções de armazenamento • Arquivos/Pastas (IsolatedStorageSettings): Código var store = IsolatedStorageFile.GetUserStoreForApplication() store.CreateDirectory("MyApp1"); IsolatedStorageFileStream rootFile = store.CreateFile("InTheRoot.txt"); rootFile.Close(); if (store.FileExists(filePath)) { StreamWriter sw = new StreamWriter( store.OpenFile( "InTheRoot.txt”, FileMode.Open, . . FileAccess.Write)); }
  • 83. Opções de armazenamento • LINQ to SQL: Código var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems select todo; ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);