Introduction

This concept allows the phone user to handle the task easily in a lightweight manner.

Question Arises: What is Application Bar?

An Application Bar is similar to the taskbar in our desktop computer systems. We will add a list of applications to our tray and it will be easy to operate some phone functionalities. It provides a good UI overriding the cluttered environment. Once we implement this concept we will get a better grip on this.

So, let's get it started!!!

The Complete Code of IService1.cs looks like this.

Code:

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_Application_Bar
{
// 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);
[OperationContract]
string Menu();
}
}

The Complete Code of Service1.svc.cs looks like this.

Code:

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_Application_Bar

{
// 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;

}
public string Menu()

{

return "Hurray!!!...I am from WCF for Menu Item";

}
}
}

The Complete Code of Web.Config looks like this.

Code:

<?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>

The Complete Code of MainPage.xaml looks like this.

Code:

<phone:PhoneApplicationPage

x:Class="Application_Bar.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="696"

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="Vijay's Application Bar" 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="44,45,0,0" Name="textBlock1" Text="Please Enter First Number"

FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />

<TextBox Height="72" HorizontalAlignment="Left" Margin="336,19,0,0" Name="textBox1" VerticalAlignment="Top" Width="114" />

<TextBlock Height="30" HorizontalAlignment="Left" Margin="12,110,0,0" Name="textBlock2" Text="Please Enter Second Number"

FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />

<TextBox Height="72" HorizontalAlignment="Left" Margin="336,84,0,0" Name="textBox2" VerticalAlignment="Top" Width="114" />

<TextBlock Height="30" HorizontalAlignment="Left" Foreground="Red" Margin="120,253,0,0" Name="textBlock3" FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />

</Grid>
</Grid>
<!--Sample code showing usage of ApplicationBar-->

<phone:PhoneApplicationPage.ApplicationBar>

<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">

<shell:ApplicationBarIconButton x:Name="Add1" IconUri="/appbar.add.rest.png" Text="Add" Click="Add1_Click"/>

<shell:ApplicationBarIconButton x:Name="Sub1" IconUri="/appbar.minus.rest.png" Text="Sub" Click="Sub1_Click"/>

<shell:ApplicationBarIconButton x:Name="Mul1" IconUri="/appbar.favs.rest.png" Text="Mul" Click="Mul1_Click"/>

<shell:ApplicationBarIconButton x:Name="Div1" IconUri="/appbar.basecircle.rest.png" Text="Div" Click="Div1_Click"/>

<shell:ApplicationBar.MenuItems>

<shell:ApplicationBarMenuItem x:Name="Menu1" Text="WCF Message" Click="Menu1_Click"/>

</shell:ApplicationBar.MenuItems>

</shell:ApplicationBar>

</phone:PhoneApplicationPage.ApplicationBar>
</
phone:PhoneApplicationPage>

The Complete Code of MainPage.xaml.cs looks like this.

Code:

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 Application_Bar.ServiceReference1;
namespace Application_Bar

{
public partial class MainPage : PhoneApplicationPage

{
// Constructor
public MainPage()

{

InitializeComponent();

}
static void AddCall(object sender, AddCompletedEventArgs e)

{

MessageBox.Show(" The Addition Result is: " + e.Result.ToString());

}
private void Add1_Click(object sender, EventArgs e)

{

textBlock3.Text = "";

if ((string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text)))

{

textBlock3.Text = "Please Enter Some Values";

}

else

{

Service1Client objClient = new Service1Client();

objClient.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCall);

objClient.AddAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));

textBox1.Text = "";

textBox2.Text = "";
}
}
static void SubCall(object sender, SubCompletedEventArgs e)

{

MessageBox.Show(" The Substraction Result is: " + e.Result.ToString());

}
private void Sub1_Click(object sender, EventArgs e)

{

textBlock3.Text = "";

if ((string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text)))

{

textBlock3.Text = "Please Enter Some Values";

}

else

{

Service1Client objClient = new Service1Client();

objClient.SubCompleted += new EventHandler<SubCompletedEventArgs>(SubCall);

objClient.SubAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));

textBox1.Text = "";

textBox2.Text = "";
}
}
static void MulCall(object sender, MulCompletedEventArgs e)

{

MessageBox.Show(" The Multiplication Result is: " + e.Result.ToString());
}
private void Mul1_Click(object sender, EventArgs e)

{

textBlock3.Text = "";

if ((string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text)))

{

textBlock3.Text = "Please Enter Some Values";

}

else

{

Service1Client objClient = new Service1Client();

objClient.MulCompleted += new EventHandler<MulCompletedEventArgs>(MulCall);

objClient.MulAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));

textBox1.Text = "";

textBox2.Text = "";

}
}
static void DivCall(object sender, DivCompletedEventArgs e)

{

MessageBox.Show(" The Division Result is: " + e.Result.ToString());

}
private void Div1_Click(object sender, EventArgs e)

{

textBlock3.Text = "";

if ((string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text)))

{

textBlock3.Text = "Please Enter Some Values";

}

else

{

Service1Client objClient = new Service1Client();

objClient.DivCompleted += new EventHandler<DivCompletedEventArgs>(DivCall);

objClient.DivAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));

textBox1.Text = "";

textBox2.Text = "";
}
}
static void MenuCall(object sender, MenuCompletedEventArgs e)

{

MessageBox.Show(e.Result);

}
private void Menu1_Click(object sender, EventArgs e)

{

textBlock3.Text = "";

Service1Client objClient = new Service1Client();

objClient.MenuCompleted += new EventHandler<MenuCompletedEventArgs>(MenuCall);

objClient.MenuAsync();

}

}

}

The Output of the Application looks like this:

vijay1.jpg

The Addition Operation Output Application looks like this:

v2.jpg

v3.jpg

v4.jpg

The Menu Operation Output Application looks like this:

v5.jpg

The Nothing Entered Output Application looks like this:

v6.jpg

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