Market Place Search Task in Windows Phone 7 via WCF Service


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.

MarketSearch0.png

Market Place Search Output Application looks like this.

MarketSearch1.png

Nothing Entered Output Application looks like this.

MarketSearch2.png

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

Thanks Vijay Prativadi.


Similar Articles
MVC Corporation
MVC Corporation is consulting and IT services based company.