Code For Search Task in Windows Phone 7 Via WCF Service


Introduction

Question Arises: What is a Search Task?

This task allows a user to search specifically for a requested query with matching keywords over Windows Phone 7.

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_Search_Application

{

    // 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);
    }
}


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_Search_Application

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

        }

    }
}

 

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="Search_Task.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" Text="Vijay's Search Task Application" 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">
            <TextBox Height="72" HorizontalAlignment="Left" Margin="216,25,0,0" Name="textBox1"  VerticalAlignment="Top" Width="240" />
            <Button Content="Search Now" FontFamily="Verdana" FontSize="22" Height="72" HorizontalAlignment="Left" Margin="155,103,0,0"
                       Name="button1" VerticalAlignment="Top"Width="186" Click="button1_Click" />
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="16,47,0,0" Name="textBlock1" Text="Enter Query Here"
                       FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />
            <TextBlock Height="30" FontFamily="Verdana" FontSize="22" HorizontalAlignment="Left" Margin="137,229,0,0" Name="textBlock2" Foreground="Red" VerticalAlignment="Top" />
        </Grid>
    </Grid>
</
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 Microsoft.Phone.Tasks;

using Search_Task.ServiceReference1;
namespace Search_Task

{
    public partial class MainPage : PhoneApplicationPage
    {

        // Constructor

        public MainPage()

        {

            InitializeComponent();

        }
        static void SearchCall(object sender, SearchCompletedEventArgs e)

        {

            SearchTask objSearchTask = new SearchTask();

            objSearchTask.SearchQuery = e.Result;

            objSearchTask.Show();
        }
        private void button1_Click(object sender, RoutedEventArgs e)

        {

            if (string.IsNullOrEmpty(textBox1.Text))

            {

                textBlock2.Text = "Please Enter Query";

            }

            else

            {

                Service1Client objClient = new Service1Client();

                objClient.SearchCompleted += new EventHandler<SearchCompletedEventArgs>(SearchCall);

                objClient.SearchAsync(textBox1.Text);
            }
        }
    }
}

 

The Output of the Application looks like this:

v1.jpg

 

The Searched Task Output Application looks like this:

v2.jpg

 

The Nothing Entered Output Application looks like this:

v3.jpg

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.