Password Input Prompt in Windows Phone 7 Via WCF Service


Introduction

Before we get started working with a Password Input prompt, we need to download the Coding4Fun Toolkit from http://coding4fun.codeplex.com/. Later add Coding4Fun.Phone.Controls.dll as a reference for our newly created project.

Today, in this article let's dig out another new concept related to Windows Phone 7, whereby communicating with a WCF Service to perform some operation.

Question:
What is Password Input Prompt?

In simple terms "It enables user to enter password. It enables user entered text is not visible. It is displayed as text mode password text".

Let's get this started off now!!!

Step 1: The complete code of the 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;
using SilverlightApplication1;
 
namespace WCF_Password
{
   
// 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 password(string a);
    }
}


Step 2: The complete code of the 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;
using SilverlightApplication1;
 
namespace WCF_Password
{
   
// 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 password(string a)
        {
            return "Your Password is : " + a;
        }
    }
}

Step 3: The complete code of the 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 the MainPage.xaml looks like this:

<phone:PhoneApplicationPage x:Class="Password_Input_Prompt_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="Password Input Prompt 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">
            <Button Content="Show Password" FontFamily="Verdana" FontSize="22" Height="72"
HorizontalAlignment="Left" Margin="125,182,0,0" Name="button1" VerticalAlignment="Top" Width="239"
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>

Step 5: The complete code of the 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 Coding4Fun.Phone.Controls;
using Password_Input_Prompt_Application.ServiceReference1;
using SilverlightApplication1;
 
namespace Password_Input_Prompt_Application
{
    public partial class MainPage :
PhoneApplicationPage
    {
       
// Constructor
        public MainPage()
        {
            InitializeComponent();
        }
        private void messCall(object sender, passwordCompletedEventArgs e)
        {
            MessageBox.Show(e.Result);
        }
        PasswordInputPrompt objPrompt = new PasswordInputPrompt();
        private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            objPrompt.FontFamily = new FontFamily("Verdana");
            objPrompt.FontSize = 22;
            objPrompt.VerticalAlignment = System.Windows.VerticalAlignment.Center;
            objPrompt.IsCancelVisible = true;
            objPrompt.Background = new SolidColorBrush(Colors.LightGray);
            objPrompt.Foreground = new SolidColorBrush(Colors.Blue);
            objPrompt.Title = "Login Password";
            objPrompt.Message = "Please Enter Password";
            objPrompt.Show();
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Service1Client obj_Client = new Service1Client();
            obj_Client.passwordCompleted += new EventHandler<passwordCompletedEventArgs>(messCall);
            obj_Client.passwordAsync(objPrompt.Value);
        }
    }
}


Step 6: The output of the application looks like this:

Password1.gif

Step 7: The output of the Password Entered Application looks like this:

Password2.gif

Step 8: The output of the Password Display Application looks like this:

Password3.gif

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.