×
Namespaces

Variants
Actions
(Difference between revisions)

Como avaliar uma aplicação usando Cimbalino Windows Phone Toolkit

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Fix size of last image)
hamishwillee (Talk | contribs)
m (Hamishwillee -)
Line 303: Line 303:
 
* [[Criando uma página "Sobre" para aplicações em Windows Phone]]
 
* [[Criando uma página "Sobre" para aplicações em Windows Phone]]
  
[[en:How to use Cimbalino Windows Phone Toolkit - EmailComposeService, MarketplaceReviewService and ShareLinkService]]
 
 
<!-- Translation --> [[en:How to use Cimbalino Windows Phone Toolkit - EmailComposeService, MarketplaceReviewService and ShareLinkService]]
 
<!-- Translation --> [[en:How to use Cimbalino Windows Phone Toolkit - EmailComposeService, MarketplaceReviewService and ShareLinkService]]

Revision as of 08:32, 8 November 2013

Este artigo tem como objetivo mostrar como usar Cimbalino Windows Phone Toolkit - EmailComposeService, MarketplaceReviewService and ShareLinkService.

SignpostIcon XAML 40.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata

Testado com
SDK: Windows Phone 8.0 SDK, Windows Phone 7.1.1 SDK
Aparelho(s): Nokia Lumia 800, 920

Compatibilidade
Artigo
Tradução:
Por saramgsilva
Última alteração feita por hamishwillee em 08 Nov 2013

Introdução

Cimbalino Windows Phone Toolkit é um conjunto de itens uteis e poderosos para ajudar na implementação de aplicações Windows Phone. Projeto base do toolkit contendo serviços para implementação do padrão de MVVM, conversores, classes auxiliares, métodos de extensões;

  • IMarketplaceReviewService é a interface (Cimbalino toolkit - código fonte aqui) que representa o serviço com a capacidade de mostrar o ecrã dos comentários do mercados na aplicação. A Implementação é MarketplaceReviewService.
  • IShareLinkService é a interface (Cimbalino toolkit- código fonte aqui) que representa o serviço com a capacidade de partilhar "links" na rede social configurada no dispositivo. A Implementação é ShareLinkService.

Contruindo o exemplo

Os pacotes estão disponíveis em Nuget Package Manager (para ambos os "targets") e podem ser instalados, para mais detalhes consultar: Como instalar os pacotes Cimbalino Windows Phone Toolkit. O exemplo deste artigo usa MVVM Light para ajudar na implementação do padrão MVVM, para mais detalhes consultar:

Vamos começar!

Devemos começar por registar cada serviço no ViewModelLocator, como podemos ver de seguida:

/// <summary>
/// This class contains static references to all the view models in the
/// application and provides an entry point for the bindings.
/// </summary>
public class ViewModelLocator
{
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
 
if (!SimpleIoc.Default.IsRegistered<IMarketplaceReviewService>())
{
SimpleIoc.Default.Register<IMarketplaceReviewService, MarketplaceReviewService>();
}
 
if (!SimpleIoc.Default.IsRegistered<IShareLinkService>())
{
SimpleIoc.Default.Register<IShareLinkService, ShareLinkService>();
}
 
if (!SimpleIoc.Default.IsRegistered<IEmailComposeService>())
{
SimpleIoc.Default.Register<IEmailComposeService, EmailComposeService>();
}
 
SimpleIoc.Default.Register<MainViewModel>();
}
 
public MainViewModel MainViewModel
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
 
public static void Cleanup()
{
// TODO Clear the ViewModels
}
}

Em seguinda devemos implementar o MainViewModel, como podemos ver de seguida:

/// <summary>
/// This class contains properties that the main View can data bind to.
/// </summary>
public class MainViewModel : ViewModelBase
{
/// <summary>
/// The email compose service.
/// </summary>
private readonly IEmailComposeService _emailComposeService;
 
/// <summary>
/// The marketplace review service.
/// </summary>
private readonly IMarketplaceReviewService _marketplaceReviewService;
 
/// <summary>
/// The share link service.
/// </summary>
private readonly IShareLinkService _shareLinkService;
 
/// <summary>
/// The public application url.
/// </summary>
private readonly string _appUrl;
 
/// <summary>
/// Initializes a new instance of the <see cref="MainViewModel"/> class.
/// </summary>
/// <param name="emailComposeService">
/// The email Compose Service.
/// </param>
/// <param name="marketplaceReviewService">
/// The marketplace review service
/// </param>
/// <param name="shareLinkService">
/// The share Link Service.
/// </param>
public MainViewModel(
IEmailComposeService emailComposeService,
IMarketplaceReviewService marketplaceReviewService,
IShareLinkService shareLinkService)
{
_emailComposeService = emailComposeService;
_marketplaceReviewService = marketplaceReviewService;
_shareLinkService = shareLinkService;
 
RateCommand = new RelayCommand(this.Rate);
SendFeedbackCommand = new RelayCommand(this.SendFeedback);
ShareToMailCommand = new RelayCommand(this.ShareToMail);
ShareSocialNetworkCommand = new RelayCommand(this.ShareSocialNetwork);
_appUrl = string.Concat("http://windowsphone.com/s?appid=8df00038-1b7a-406b-b33f-37a78b17348c");
}
 
/// <summary>
/// Gets the rate command.
/// </summary>
public ICommand RateCommand { get; private set; }
 
/// <summary>
/// Gets the send feedback command.
/// </summary>
public ICommand SendFeedbackCommand { get; private set; }
 
/// <summary>
/// Gets the share social network command.
/// </summary>
public ICommand ShareSocialNetworkCommand { get; private set; }
 
/// <summary>
/// Gets the share to e-mail command.
/// </summary>
public ICommand ShareToMailCommand { get; private set; }
 
/// <summary>
/// The rate.
/// </summary>
private void Rate()
{
_marketplaceReviewService.Show();
}
 
/// <summary>
/// The send feedback.
/// </summary>
private void SendFeedback()
{
const string To = "saramgsilva@gmail.com";
const string Subject = "My Feedback";
var body = "This the body";
_emailComposeService.Show(To, Subject, body);
}
 
/// <summary>
/// The share social network.
/// </summary>
private void ShareSocialNetwork()
{
const string Message = "This application is amazing, should try it! See in";
_shareLinkService.Show("Cimbalino Toolkit Sample", Message, new Uri(_appUrl, UriKind.Absolute));
}
 
/// <summary>
/// The share to mail.
/// </summary>
private void ShareToMail()
{
const string Subject = "Cimbalino Toolkit Sample";
var body = string.Concat("This application is amazing, you should try it! See in", _appUrl);
_emailComposeService.Show(Subject, body);
}
}

para conetar a view model com a página devemos adicionar a ViewModelLocator no App.xaml:

<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />

e adicionar o binding na página principal:


 DataContext="{Binding MainViewModel,
Source={StaticResource Locator}}"

A MainPage.xaml será algo do género:

<phone:PhoneApplicationPage x:Class="CimbalinoSample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cimbalino="clr-namespace:Cimbalino.Phone.Toolkit.Behaviors;assembly=Cimbalino.Phone.Toolkit"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
DataContext="{Binding MainViewModel,
Source={StaticResource Locator}}"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
Orientation="Portrait"
SupportedOrientations="Portrait"
shell:SystemTray.IsVisible="True"
mc:Ignorable="d">
 
<!-- 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="1"
Margin="0,5,12,396">
<TextBlock Margin="12,0"
Style="{StaticResource PhoneTextTitle2Style}"
Text="Cimbalino Toolkit Sample" />
</StackPanel>
<TextBlock Grid.RowSpan="2"
Margin="12,50,-3,487"
Style="{StaticResource PhoneTextTitle3Style}"
TextWrapping="Wrap">
This samples has the goal to show how to use Cimbalino Toolkit - EmailComposeService, MarketplaceReviewService and ShareLinkService.
</TextBlock>
<!-- ContentPanel - place additional content here -->
<Grid x:Name="ContentPanel"
Grid.Row="1"
Margin="12,0,12,0" />
<i:Interaction.Behaviors>
<cimbalino:ApplicationBarBehavior>
<cimbalino:ApplicationBarIconButton Command="{Binding RateCommand,
Mode=OneTime}"
IconUri="/Images/appbar.rate.png"
Text="Rate it" />
<cimbalino:ApplicationBarIconButton Command="{Binding SendFeedbackCommand,
Mode=OneTime}"
IconUri="/Images/appbar.reply.email.png"
Text="Feedback" />
<cimbalino:ApplicationBarIconButton Command="{Binding ShareToMailCommand,
Mode=OneTime}"
IconUri="/Images/appbar.email.png"
Text="Email" />
<cimbalino:ApplicationBarIconButton Command="{Binding ShareSocialNetworkCommand,
Mode=OneTime}"
IconUri="/Images/appbar.share.png"
Text="Share it" />
</cimbalino:ApplicationBarBehavior>
</i:Interaction.Behaviors>
</Grid>
 
</phone:PhoneApplicationPage>

A MainPage será:

MainPage result

Exemplo Relacionado

101 page views in the last 30 days.