Toast Prompt in Windows Phone 7 Via WCF Service



Introduction

First before we get begin working with a Toast prompt, we need to download the Coding4Fun Toolkit from http://coding4fun.codeplex.com/. Later add the Coding4Fun.Phone.Controls.dll as a reference for our newly created project.

Today, in this article let's learn another new concept related to Windows Phone 7, whereby communicating with WCF Service to perform some operation.

Question: What is a Toast Prompt?

In simple terms "It is used to display some message or notification to the user within some seconds and disappears automatically after message is shown. So this type of prompt enables to intimate the user with some concise information".

Let's get this started off now!!!

Step 1: The Complete Code of IService1.cs looks like this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;}
using System.ServiceModel.Web;
using System.Text;

namespace Toast_Prompt_WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        double add(double a, double b);

        [OperationContract]
        double sub(double a, double b);
 
        [OperationContract]
        double mul(double a, double b);

        [OperationContract]
        double div(double a, double b);
    }
}


Step 2: The Complete Code of the Service1.svc.cs looks like this:
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace Toast_Prompt_WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    public class Service1 : IService1
    {

        public double add(double a, double b)
        {
            return a + b;
        }
        public double sub(double a, double b)
        {
            return a - b;
        }

        public double mul(double a, double b)
        {
            return a * b;
        }
        public double div(double a, double b)
        {
            return a / b;
        }
    }
}


 
 

Step 3: The Complete Code of Web.Config looks like this:
 
<?xml version="1.0"?>
<configuration>

  <system.web>
    <
compilation debug="true" targetFramework="4.0" />
  </system.web>
  <
system.serviceModel>
    <
behaviors>
      <
serviceBehaviors>
        <
behavior>
          <!--
To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <
serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <
serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </
serviceBehaviors>
    </
behaviors>
    <
serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <
system.webServer>
    <
modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>


Step 4: The Complete Code of MainPage.xaml looks like this:
 
<phone:PhoneApplicationPage xmlns:my="clr-namespace:Coding4Fun.Phone.Controls;assembly=Coding4Fun.Phone.Controls"  
    x:Class="ToastPromptApplication.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="Portrait" 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 x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="Toast Prompt - WCF Application" FontFamily="Verdana" FontSize="22" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="Windows 7 Phone" 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">
            <Button Content="Toast Addition" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="83,233,0,0" Name="button1" VerticalAlignment="Top" Width="291" Click="button1_Click" />
            <TextBlock FontFamily="Verdana" FontSize="22" Height="30" HorizontalAlignment="Left" Margin="17,34,0,0" Name="textBlock1" Text="Please Enter FirstNumber: " VerticalAlignment="Top" />
            <TextBox Height="72" HorizontalAlignment="Right" Margin="0,17,6,0" Name="textBox1" VerticalAlignment="Top" Width="132" />
            <TextBlock FontFamily="Verdana" FontSize="22" Height="30" HorizontalAlignment="Left" Margin="0,123,0,0" Name="textBlock2" Text="Please Enter SecondNumber: " VerticalAlignment="Top" />
            <TextBox Height="72" HorizontalAlignment="Left" Margin="318,107,0,0" Name="textBox2"  VerticalAlignment="Top" Width="132" />
            <TextBlock Height="30" Foreground="Red" FontFamily="Verdana" FontSize="22" HorizontalAlignment="Left" Margin="69,183,0,0" Name="textBlock3"  VerticalAlignment="Top" />
            <Button FontFamily="Verdana" FontSize="22" Content="Toast Substraction" Height="72" HorizontalAlignment="Left" Margin="83,299,0,0" Name="button2" VerticalAlignment="Top" Width="291" Click="button2_Click" />
            <Button FontFamily="Verdana" FontSize="22" Content="Toast Multiplication" Height="72" HorizontalAlignment="Left" Margin="83,365,0,0"
Name="button3" VerticalAlignment="Top" Width="291" Click="button3_Click" />
            <Button Content="Toast Division" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="83,426,0,0"
Name="button4" VerticalAlignment="Top" Width="291" Click="button4_Click" />
        </Grid>
    </Grid
>

    <!--Sample code showing usage of ApplicationBar-->
   
<!--<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
            <shell:ApplicationBar.MenuItems>
                <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
                <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
            </shell:ApplicationBar.MenuItems>
        </shell:ApplicationBar>
    </phone:PhoneApplicationPage.ApplicationBar>-->

</phone:PhoneApplicationPage>


Step 5: The complete code of the MainPage.xaml.cs looks like this:
 
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;
using Coding4Fun.Phone.Controls;
using System.Windows.Media.Imaging;
using ToastPromptApplication.ServiceReference1;

namespace ToastPromptApplication
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        private void add_ToastCall(object sender, addCompletedEventArgs e)
        {
            ToastPrompt objPrompt = new ToastPrompt();
            objPrompt.Title = "Addition Result is: ";
            objPrompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objPrompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objPrompt.FontFamily = new FontFamily("Verdana");
            objPrompt.FontSize = 22;
            objPrompt.Background = new SolidColorBrush(Colors.Blue);
            objPrompt.Foreground = new SolidColorBrush(Colors.White);
            objPrompt.ImageSource = new BitmapImage(new Uri("appbar.add.rest.png", UriKind.RelativeOrAbsolute));
            objPrompt.Message = e.Result.ToString();
            objPrompt.Show();

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                Service1Client obj_Client = new Service1Client();
                obj_Client.addCompleted += new EventHandler<addCompletedEventArgs>(add_ToastCall);
                obj_Client.addAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }

        }

        private void sub_ToastCall(object sender, subCompletedEventArgs e)
        {
            ToastPrompt objPrompt = new ToastPrompt();
            objPrompt.Title = "Substraction Result is: ";
            objPrompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objPrompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objPrompt.FontFamily = new FontFamily("Verdana");
            objPrompt.FontSize = 22;
            objPrompt.Background = new SolidColorBrush(Colors.Blue);
            objPrompt.Foreground = new SolidColorBrush(Colors.White);
            objPrompt.ImageSource = new BitmapImage(new Uri("appbar.minus.rest.png", UriKind.RelativeOrAbsolute));
            objPrompt.Message = e.Result.ToString();
            objPrompt.Show();

        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                Service1Client obj_Client = new Service1Client();
                obj_Client.subCompleted += new EventHandler<subCompletedEventArgs>(sub_ToastCall);
                obj_Client.subAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }

        }

        private void mul_ToastCall(object sender, mulCompletedEventArgs e)
        {
            ToastPrompt objPrompt = new ToastPrompt();
            objPrompt.Title = "Multiplication Result is: ";
            objPrompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objPrompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objPrompt.FontFamily = new FontFamily("Verdana");
            objPrompt.FontSize = 22;
            objPrompt.Background = new SolidColorBrush(Colors.Blue);
            objPrompt.Foreground = new SolidColorBrush(Colors.White);
            objPrompt.ImageSource = new BitmapImage(new Uri("appbar.cancel.rest.png", UriKind.RelativeOrAbsolute));
            objPrompt.Message = e.Result.ToString();
            objPrompt.Show();
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                Service1Client obj_Client = new Service1Client();
                obj_Client.mulCompleted += new EventHandler<mulCompletedEventArgs>(mul_ToastCall);
                obj_Client.mulAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        private void div_ToastCall(object sender, divCompletedEventArgs e)
        {
            ToastPrompt objPrompt = new ToastPrompt();
            objPrompt.Title = "Division Result is: ";
            objPrompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objPrompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objPrompt.FontFamily = new FontFamily("Verdana");
            objPrompt.FontSize = 22;
            objPrompt.Background = new SolidColorBrush(Colors.Blue);
            objPrompt.Foreground = new SolidColorBrush(Colors.White);
            objPrompt.ImageSource = new BitmapImage(new Uri("appbar.edit.rest.png", UriKind.RelativeOrAbsolute));
            objPrompt.Message = e.Result.ToString();
            objPrompt.IsTabStop = false;
            objPrompt.Show();

        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                Service1Client obj_Client = new Service1Client();
                obj_Client.divCompleted += new EventHandler<divCompletedEventArgs>(div_ToastCall);
                obj_Client.divAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }
 
    }
}

 

Step 6: The output of the application looks like this:

ToastPrompt1.png

Step 7: The output of the Nothing Entered Application looks like this:

  ToastPrompt2.png

I hope this article is useful for you.


Similar Articles
MVC Corporation
MVC Corporation is consulting and IT services based company.