About Prompt in Windows Phone 7 via WCF Service



Introduction

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

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

Question: What is About Prompt?

In Simple Terms "It is used to display some message or notification to the user and enables user to accept the notification stating that user has been through the notification. 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 WCF_About_Application
{
    // 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 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 WCF_About_Application
{
    // 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 
    x:Class="AboutPromptApplication.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="About 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">
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="6,22,0,0" Name="textBlock1" Text="Please Enter First Number: " FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />
            <TextBox Height="72" HorizontalAlignment="Left" Margin="318,0,0,0" Name="textBox1"  VerticalAlignment="Top" Width="138" />
            <TextBlock Height="30" FontFamily="Verdana" FontSize="22" HorizontalAlignment="Left" Margin="0,113,0,0" Name="textBlock2" Text="Please Enter Second Number: " VerticalAlignment="Top" />
            <TextBox Height="71" HorizontalAlignment="Left" Margin="318,90,0,0" Name="textBox2" VerticalAlignment="Top" Width="138" />
            <Button Content="Addition" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="130,220,0,0" Name="button1" VerticalAlignment="Top" Width="209" Click="button1_Click" />
            <TextBlock FontFamily="Verdana" FontSize="22" Foreground="Red"  Height="30" HorizontalAlignment="Left" Margin="77,171,0,0" Name="textBlock3"  VerticalAlignment="Top" />
            <Button Content="Substraction" FontFamily="Verdana" FontSize="22" Height="71" HorizontalAlignment="Left" Margin="130,298,0,0" Name="button2" VerticalAlignment="Top" Width="209" Click="button2_Click" />
            <Button Content="Multiplication" FontFamily="Verdana" FontSize="22" Height="66" HorizontalAlignment="Left" Margin="130,375,0,0" Name="button3" VerticalAlignment="Top" Width="209" Click="button3_Click" />
            <Button Content="Division" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="130,447,0,0" Name="button4" VerticalAlignment="Top" Width="209" 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 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
AboutPromptApplication.ServiceReference1;

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

        private void add_AboutCall(object sender, addCompletedEventArgs e)
        {
            obj_Prompt.Title = "Addition Operation";
            obj_Prompt.Body = "Addition Result is : " + e.Result.ToString();
            obj_Prompt.FontFamily = new FontFamily("Verdana");
            obj_Prompt.FontSize = 22;
            obj_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            obj_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            obj_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            obj_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            obj_Prompt.Footer = "@ Vijay Prativadi";
            obj_Prompt.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_AboutCall);
                obj_Client.addAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        private void sub_AboutCall(object sender, subCompletedEventArgs e)
        {
            obj_Prompt.Title = "Substraction Operation";
            obj_Prompt.Body = "Substraction Result is : " + e.Result.ToString();
            obj_Prompt.FontFamily = new FontFamily("Verdana");
            obj_Prompt.FontSize = 22;
            obj_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            obj_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            obj_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            obj_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            obj_Prompt.Footer = "@ Vijay Prativadi";
            obj_Prompt.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_AboutCall);
                obj_Client.subAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
 
        }

        private void mul_AboutCall(object sender, mulCompletedEventArgs e)
        {
            obj_Prompt.Title = "Multiplication Operation";
            obj_Prompt.Body = "Multiplication Result is : " + e.Result.ToString();
            obj_Prompt.FontFamily = new FontFamily("Verdana");
            obj_Prompt.FontSize = 22;
            obj_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            obj_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            obj_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            obj_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            obj_Prompt.Footer = "@ Vijay Prativadi";
            obj_Prompt.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_AboutCall);
                obj_Client.mulAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        private void div_AboutCall(object sender, divCompletedEventArgs e)
        {
            obj_Prompt.Title = "Division Operation";
            obj_Prompt.Body = "Division Result is : " + e.Result.ToString();
            obj_Prompt.FontFamily = new FontFamily("Verdana");
            obj_Prompt.FontSize = 22;
            obj_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            obj_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            obj_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            obj_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            obj_Prompt.Footer = "@ Vijay Prativadi";
            obj_Prompt.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_AboutCall);
                obj_Client.divAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        #region Instance Variable
        AboutPrompt obj_Prompt = new AboutPrompt();
        #endregion
    }
}

 

Step 6: The Output of the Application looks like this:

About1.png
Step 7: The Output of Nothing Entered Application looks like this:

About2.png

Step 8: The Output of Addition Operation Application looks like this:

About3.png
Step 9: The Output of Division Operation Application looks like this:

  About4.png

I hope this article is useful for you.


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