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.