Message Prompt in Windows Phone 7 Via WCF Service


Introduction

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

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

Question: What is Message Prompt?

In simple terms "It is used to display some small messages or notifications to the user and enables user to accept the notification stating that user has been through the specific prompting 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;
using PhoneApp1;
 
namespace Message_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 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;
using PhoneApp1; 

namespace Message_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>
             <
bindings />
             <
client />
             <
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="Message_Application.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="Message 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="0,24,0,0" Name="textBlock1" Text="Please Enter First Number: "
FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="-9,92,0,0" Name="textBlock2" Text="Please Enter Second Number: "
FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />
            <TextBox Height="72" HorizontalAlignment="Left" Margin="313,6,0,0" Name="textBox1" VerticalAlignment="Top" Width="137" />
            <TextBox Height="72" HorizontalAlignment="Left" Margin="313,71,0,0" Name="textBox2" VerticalAlignment="Top" Width="137" />
            <Button Content="Addition" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="114,221,0,0" Name="button1"
VerticalAlignment="Top" Width="252" Click="button1_Click" />
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="67,162,0,0" Name="textBlock3" FontFamily="Verdana" FontSize="22"
Foreground="Red" VerticalAlignment="Top" />
            <Button Content="Substraction" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="114,299,0,0"
Name="button2" VerticalAlignment="Top" Width="252" Click="button2_Click" />
            <Button Content="Multiplication" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="114,377,0,0"
Name="button3" VerticalAlignment="Top" Width="252" Click="button3_Click" />
            <Button Content="Division" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="114,455,0,0" Name="button4"
VerticalAlignment="Top" Width="252" 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 Message_Application.ServiceReference1;
using Coding4Fun.Phone.Controls;
using PhoneApp1;
 
namespace Message_Application
{
    public partial class MainPage :
PhoneApplicationPage
    {
       
// Constructor
        public MainPage()
        {
            InitializeComponent();
        } 
        private void add_Call(object sender, addCompletedEventArgs e)
        {
            MessagePrompt objadd_Prompt = new MessagePrompt();
            objadd_Prompt.Title = "Addition Operation";
            objadd_Prompt.FontFamily = new FontFamily("Verdana");
            objadd_Prompt.FontSize = 22;
            objadd_Prompt.IsCancelVisible = true;
            objadd_Prompt.Body = "Addition Result is: " + e.Result.ToString();
            objadd_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objadd_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objadd_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            objadd_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            objadd_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_Call);
                obj_Client.addAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }
 
        private void sub_Call(object sender, subCompletedEventArgs e)
        { 
            MessagePrompt objsub_Prompt = new MessagePrompt();
            objsub_Prompt.Title = "Substraction Operation";
            objsub_Prompt.FontFamily = new FontFamily("Verdana");
            objsub_Prompt.FontSize = 22;
            objsub_Prompt.IsCancelVisible = true;
            objsub_Prompt.Body = "Substraction Result is: " + e.Result.ToString();
            objsub_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objsub_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objsub_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            objsub_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            objsub_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_Call);
                obj_Client.subAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }
 
        private void mul_Call(object sender, mulCompletedEventArgs e)
        {
            MessagePrompt objmul_Prompt = new MessagePrompt();
            objmul_Prompt.Title = "Substraction Operation";
            objmul_Prompt.FontFamily = new FontFamily("Verdana");
            objmul_Prompt.FontSize = 22;
            objmul_Prompt.IsCancelVisible = true;
            objmul_Prompt.Body = "Substraction Result is: " + e.Result.ToString();
            objmul_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objmul_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objmul_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            objmul_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            objmul_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_Call);
                obj_Client.mulAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }
 
        private void div_Call(object sender, divCompletedEventArgs e)
        {
            MessagePrompt objdiv_Prompt = new MessagePrompt();
            objdiv_Prompt.Title = "Division Operation";
            objdiv_Prompt.FontFamily = new FontFamily("Verdana");
            objdiv_Prompt.FontSize = 22;
            objdiv_Prompt.IsCancelVisible = true;
            objdiv_Prompt.Body = "Division Result is: " + e.Result.ToString();
            objdiv_Prompt.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            objdiv_Prompt.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
            objdiv_Prompt.Background = new SolidColorBrush(Colors.LightGray);
            objdiv_Prompt.Foreground = new SolidColorBrush(Colors.Blue);
            objdiv_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_Call);
                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:

MessagePrompt1.png

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

MessagePrompt2.png
Step 8: The output of the Addition Operation Application looks like this:

MessagePrompt3.png
Step 9: The output of the Division Operation Application looks like this:

MessagePrompt4.png
I hope this article is useful for you.. I look forward for your comments and feedback. Thanks Vijay Prativadi.