Introduction
In this article let's play around with one of the interesting market search
task concept in windows phone whereby communicating a message from WCF Service.
Question Arises: What is Market Place Search?
As we Know our mindset is associated with different kinds of thought to search
in market, this application provides flexibility for the user to access the
application and query on windows phone fetch out some related data. In Simple
terms, "Get Item you want from market, accesses the application on Windows
Phone".
Let's Implement this.
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
WcfService1
{
// 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 Search(string
a);
}
}
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
WcfService1
{
// 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
Search(string a)
{
return
"" + a;
}
}
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="Market_Search_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">
<!--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"
FontFamily="Verdana"
FontSize="22"
Text="Vijay's
Market Search Task 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">
<Button
Content="Market
Search"
FontFamily="Verdana"
FontSize="22"
Height="72"
HorizontalAlignment="Left"
Margin="120,240,0,0"
Name="button1"
VerticalAlignment="Top"
Width="260"
Click="button1_Click"
/>
<TextBox
Height="72"
HorizontalAlignment="Right"
Margin="0,162,76,0"
Name="textBox1"
VerticalAlignment="Top"
Width="260" />
<TextBlock
Height="30"
FontFamily="Verdana"
FontSize="22"
HorizontalAlignment="Left"
Margin="91,112,0,0"
Name="textBlock1"
Text="Please
Enter Query to Search"
VerticalAlignment="Top"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="75,364,0,0"
Name="textBlock2"
Foreground="Red"
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 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
Microsoft.Phone.Tasks;
using
Market_Search_Task_Application.ServiceReference1;
namespace
Market_Search_Task_Application
{
public partial
class MainPage
: PhoneApplicationPage
{
// Constructor
public
MainPage()
{
InitializeComponent();
}
static void
SearchCall(object sender,
SearchCompletedEventArgs e)
{
MarketplaceSearchTask
objMarketPlace = new
MarketplaceSearchTask();
objMarketPlace.ContentType =
MarketplaceContentType.Applications;
objMarketPlace.SearchTerms = e.Result;
objMarketPlace.Show();
}
private void
button1_Click(object sender,
RoutedEventArgs e)
{
textBlock2.Text = "";
if (string.IsNullOrEmpty(textBox1.Text))
{
textBlock2.Text = "Please Enter
Search Query";
}
else
{
Service1Client objClient = new
Service1Client();
objClient.SearchCompleted += new
EventHandler<SearchCompletedEventArgs>(SearchCall);
objClient.SearchAsync(textBox1.Text);
textBox1.Text = "";
}
}
}
}
Step 6 : Output of the Application looks like this.
Market Place Search Output Application looks like this.
Nothing Entered Output Application looks like this.
I hope this article is useful for you. I look forward for your comments and
feedback.
Thanks Vijay Prativadi.