Dock Panel Using Telerik Rad in Windows Phone 7 Via WCF Service


Introduction

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

The Telerik Rad Controls for Windows Phone 7 can be downloaded from http://www.telerik.com/products/windows-phone.aspx.

The Rad Message Box is used to display the output in a nice and enhanced UI.

Question: What is a Dock Panel?

In simple terms "It provides flexibility for the user in accessing application, where elements are well aligned with Rich UI based in Dock. The elements in the dock panel are arranged according to the user requirement level. For instance: Left or Right or Top or Bottom".

Let's get this implemented for a better idea of this!!!

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;

namespace WCF_Dock_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]
        double add(double a, double b);

        [OperationContract]
        double sub(double a, double b);

        [OperationContract]
        double mul(double a, double b);

        [OperationContract]
        double div(double a, double b);
    }
}


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;

namespace WCF_Dock_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 double add(double a, double b)
        {
            return a + b;
        }

        public double sub(double a, double b)
        {
            return a - b;
        }

        public double mul(double a, double b)
        {
            return a * b;
        }
 
        public double div(double a, double b)
        {
            return a / b;
        }
    }
}
  


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="Rad_Dock_Panel_Application_WP7.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Primitives"

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"

    xmlns:primitives="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Primitives"

    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" >

        About

 

       <!--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="Rad Dock Panel 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">
            <telerik:RadDockPanel x:Name="radDock1" LastChildFill="False" Height="395" HorizontalAlignment="Left" Margin="6,206,0,0" VerticalAlignment="Top" Width="444" >
                <Button  x:Name="btnSub" FontFamily="Verdana" FontSize="22" Content="Subtraction" Background="Green"  primitives:RadDockPanel.Dock="Top" Height="103" Width="432" Click="btnSub_Click"/>
                <Button   x:Name="btnMul" FontFamily="Verdana" FontSize="22" Content="Multiplication" Background="Red" primitives:RadDockPanel.Dock="Bottom" Click="btnMul_Click" />
                <Button  x:Name="btnAdd" Content="Addition" FontFamily="Verdana" FontSize="22" Background="Blue" VerticalContentAlignment="Center" primitives:RadDockPanel.Dock="Left" Height="233" Width="154" Click="btnAdd_Click"/>
                <Button x:Name="btnDiv" Content="Division" Background="Yellow" FontFamily="Verdana" FontSize="22" VerticalContentAlignment="Center"  primitives:RadDockPanel.Dock="Right" Height="233" Click="btnDiv_Click"/>
            </telerik:RadDockPanel>
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="9,20,0,0" Text="Please Enter First Number: " FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" />
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="0,102,0,0" Text="Please Enter Second Number: " FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" /            <TextBox Height="72" HorizontalAlignment="Left" Margin="319,0,0,0"  VerticalAlignment="Top" Width="131" Name="textBox1" />
            <TextBox Height="72" HorizontalAlignment="Left" Margin="319,78,0,0"  VerticalAlignment="Top" Width="131" Name="textBox2" />
            <TextBlock Height="30" HorizontalAlignment="Left" Margin="70,151,0,0" Foreground="Red" FontFamily="Verdana" FontSize="22" VerticalAlignment="Top" Name="textBlock3" />
        </Grid>
    </Grid
>

</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 Rad_Dock_Panel_Application_WP7.ServiceReference1;

using Telerik.Windows.Controls.Primitives;

using Telerik.Windows.Controls;

namespace Rad_Dock_Panel_Application_WP7
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        private void add_Call(object sender, addCompletedEventArgs e)
        {
            RadMessageBox.Show("Addition Result is: " + e.Result.ToString(), MessageBoxButtons.OKCancel, "Addition Using DockPanel-Telerik WP7 via WCF", null, false, false, System.Windows.HorizontalAlignment.Stretch, System.Windows.VerticalAlignment.Center);
        }

        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                objClient.addCompleted += new EventHandler<addCompletedEventArgs>(add_Call);
                objClient.addAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }

        }

        private void sub_Call(object sender, subCompletedEventArgs e)
        {
            RadMessageBox.Show("Subtraction Result is: " + e.Result.ToString(), MessageBoxButtons.OKCancel, "Subtraction Using DockPanel-Telerik WP7 via WCF", null, false, false, System.Windows.HorizontalAlignment.Stretch, System.Windows.VerticalAlignment.Center);

        }
 
        private void btnSub_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                objClient.subCompleted += new EventHandler<subCompletedEventArgs>(sub_Call);
                objClient.subAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }

        }

        private void mul_Call(object sender, mulCompletedEventArgs e)
        {
            RadMessageBox.Show("Multiplication Result is: " + e.Result.ToString(), MessageBoxButtons.OKCancel, "Multiplication Using DockPanel-Telerik WP7 via WCF", null, false, false, System.Windows.HorizontalAlignment.Stretch, System.Windows.VerticalAlignment.Center);
        }

        private void btnMul_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                objClient.mulCompleted += new EventHandler<mulCompletedEventArgs>(mul_Call);
                objClient.mulAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        private void div_Call(object sender, divCompletedEventArgs e)
        {
            RadMessageBox.Show("Division Result is: " + e.Result.ToString(), MessageBoxButtons.OKCancel, "Division Using DockPanel-Telerik WP7 via WCF", null, false, false, System.Windows.HorizontalAlignment.Stretch, System.Windows.VerticalAlignment.Center);
        }

        private void btnDiv_Click(object sender, RoutedEventArgs e)
        {
            textBlock3.Text = "";
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                textBlock3.Text = "Please Enter Some Values";
            }
            else
            {
                objClient.divCompleted += new EventHandler<divCompletedEventArgs>(div_Call);
                objClient.divAsync(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text));
                textBox1.Text = "";
                textBox2.Text = "";
            }
        }

        #region Instance Variables
        Service1Client objClient = new Service1Client();
        #endregion
    }
}

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

Dock1.png

Step 7: The Output of the Nothing Entered Application looks like this:

Dock2.png
Step 8: The Output of the Addition Operation Application looks like this:

Dock3.png

Dock4.png
Step 9: The Output of the Division Operation Application looks like this:

  Dock5.png

Dock6.png
I hope this article is useful for you.

Up Next
    Ebook Download
    View all
    Learn
    View all
    MVC Corporation is consulting and IT services based company.