Today, in this article
let's get ready to work out with one concept windows phone. The saving contacts
concept is very useful in real time and it's mostly used application by many
users. I hope we all have some better idea on how to save contacts on our
mobiles. So this article provides a real time example of how to approach if you
going to say to code an application as this.
So, let's get it started
off.
I think we all are good to
go and implement this wonderful concept.
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
Save_Contact_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]
string FirstName(string
a);
[OperationContract]
string LastName(string
a);
[OperationContract]
string JobTitle(string
a);
[OperationContract]
string WebSite(string
a);
[OperationContract]
string Company(string
a);
[OperationContract]
string PhoneNumber(string
a);
[OperationContract]
string PersonalMail(string
a);
}
}
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
Save_Contact_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
string FirstName(string
a)
{
return
"" + a;
}
public
string LastName(string
a)
{
return
"" + a;
}
public
string JobTitle(string
a)
{
return
"" + a;
}
public
string WebSite(string
a)
{
return
"" + a;
}
public
string Company(string
a)
{
return
"" + a;
}
public
string PhoneNumber(string
a)
{
return
"" + a;
}
public
string PersonalMail(string
a)
{
return
"" + a;
}
}
}
The Complete Code of
WebConfig 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>
The Complete Code of
MainPage.xaml looks like this:
<phone:PhoneApplicationPage
x:Class="Save_Contact_Task_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"
Loaded="PhoneApplicationPage_Loaded">
<!--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 Save
Contact Application" 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="86,21,0,0"
Name="textBlock1"
Text="First Name"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,0,0,0"
Name="textBox1"
VerticalAlignment="Top"
Width="221"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="92,85,0,0"
Name="textBlock2"
Text="Last name"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,61,0,0"
Name="textBox2"
VerticalAlignment="Top"
Width="221"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="114,148,0,0"
Name="textBlock3"
Text="Job Title"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,125,0,0"
Name="textBox3"
VerticalAlignment="Top"
Width="221"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="115,212,0,0"
Name="textBlock4"
Text="WebSite"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,188,0,0"
Name="textBox4"
VerticalAlignment="Top"
Width="221"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,250,0,0"
Name="textBox5"
VerticalAlignment="Top"
Width="221"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="103,272,0,0"
Name="textBlock5"
Text="Company"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,313,0,0"
Name="textBox6"
VerticalAlignment="Top"
Width="221"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="37,334,0,0"
Name="textBlock6"
Text="Phone Number"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
Width="170"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="44,399,0,0"
Name="textBlock7"
Text="Personal Email"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="214,379,0,0"
Name="textBox7"
VerticalAlignment="Top"
Width="221"
/>
<TextBlock
Height="30"
Foreground="Red"
HorizontalAlignment="Left"
Margin="109,559,0,0"
Name="textBlock8"
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
Width="310"
/>
<Button
Content="Save Contact"
FontFamily="Verdana"
FontSize="22"
Height="73"
HorizontalAlignment="Left"
Margin="214,468,0,0"
Name="button1"
VerticalAlignment="Top"
Width="221"
Click="button1_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>
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
Microsoft.Phone.Tasks;
using
Save_Contact_Task_Application.ServiceReference1;
namespace
Save_Contact_Task_Application
{
public partial
class MainPage
: PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
SaveContactTask objSave =
new SaveContactTask();
Service1Client objClient = new
Service1Client();
private void
button1_Click(object sender, RoutedEventArgs e)
{
if (textBox1.Text ==
"" || textBox2.Text ==
"" || textBox3.Text ==
"" || textBox4.Text ==
"" || textBox5.Text ==
"" || textBox6.Text ==
"" || textBox7.Text ==
"")
{
textBlock8.Text = "Save Contact
Unsuccessful";
}
else
{
objSave.Completed += new
EventHandler<SaveContactResult>(SaveCall);
objClient.FirstNameCompleted += new
EventHandler<FirstNameCompletedEventArgs>(FirstCall);
objClient.LastNameCompleted += new
EventHandler<LastNameCompletedEventArgs>(LastCall);
objClient.JobTitleCompleted += new
EventHandler<JobTitleCompletedEventArgs>(JobCall);
objClient.WebSiteCompleted += new
EventHandler<WebSiteCompletedEventArgs>(WebCall);
objClient.CompanyCompleted += new
EventHandler<CompanyCompletedEventArgs>(CompanyCall);
objClient.PhoneNumberCompleted += new
EventHandler<PhoneNumberCompletedEventArgs>(PhoneCall);
objClient.PersonalMailCompleted += new
EventHandler<PersonalMailCompletedEventArgs>(EmailCall);
objClient.FirstNameAsync(textBox1.Text);
objClient.LastNameAsync(textBox2.Text);
objClient.JobTitleAsync(textBox3.Text);
objClient.WebSiteAsync(textBox4.Text);
objClient.CompanyAsync(textBox5.Text);
objClient.PhoneNumberAsync(textBox6.Text);
objClient.PersonalMailAsync(textBox7.Text);
}
textBox1.Text =
"";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
textBox7.Text = "";
}
void SaveCall(object
sender, SaveContactResult e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
MessageBox.Show("Contact Saved");
break;
case
TaskResult.Cancel:
MessageBox.Show("Contact
Cancelled");
break;
case
TaskResult.None:
MessageBox.Show("Contact Cannot
Be Saved");
break;
}
}
static void
FirstCall(object sender,
FirstNameCompletedEventArgs e)
{
SaveContactTask objSave =
new SaveContactTask();
objSave.FirstName = e.Result;
objSave.Show();
}
static
void LastCall(object
sender, LastNameCompletedEventArgs e)
{
SaveContactTask objSave = new
SaveContactTask();
objSave.LastName = e.Result;
//
objSave.Show();
}
static void
JobCall(object sender,
JobTitleCompletedEventArgs e)
{
SaveContactTask objSave = new
SaveContactTask();
objSave.JobTitle = e.Result;
//objSave.Show();
}
static void
WebCall(object sender, WebSiteCompletedEventArgs
e)
{
SaveContactTask objSave = new
SaveContactTask();
objSave.Website = e.Result;
//objSave.Show();
}
static void
CompanyCall(object sender,
CompanyCompletedEventArgs e)
{
SaveContactTask objSave = new
SaveContactTask();
objSave.Company = e.Result;
// objSave.Show();
}
static void
PhoneCall(object sender,
PhoneNumberCompletedEventArgs e)
{
SaveContactTask objSave = new
SaveContactTask();
objSave.MobilePhone = e.Result;
// objSave.Show();
}
static void
EmailCall(object sender,
PersonalMailCompletedEventArgs e)
{
SaveContactTask objSave =
new SaveContactTask();
objSave.PersonalEmail = e.Result;
// objSave.Show();
}
private
void PhoneApplicationPage_Loaded(object
sender, RoutedEventArgs e)
{
}
}
}
The Output of the
Application looks like this:

The Contact Saving
Application looks like this:


The Nothing Entered
Application looks like this:

I hope this article is useful for you.
Amit MaheshwariPosted Jan 24, 2012, 12:11 PM
It's a nice explanation about the saving contacts in windows phone, and having great effort to accomplish such task keep going. Thanks for sharing.......
Stephen JohnsonPosted Jan 24, 2012, 12:43 AM
It seems through your article that you have prepared it with too much effort and that too with a nice presentation. Thanks for sharing.