Introduction
Today, in this article let's learn another new
and wonderful 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 nice and enhanced UI.
Question: What is RadLayoutTransform?
In simple terms "It enables to display the UI
layout in flexible way as per user requirement. It is Skewed or Transform or
many more".
Let's get this implemented practically 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_Layout_Transform
{
// 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_Layout_Transform
{
// 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_Layout_Transform_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"
xmlns:telerik="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"
Loaded="mainPage_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="Rad Layout
Transform - WCF Application" FontFamily="Verdana"
FontSize="21"
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">
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="0,26,0,0"
Text="PLease
Enter First Number: "
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="0,103,0,0"
Text="Please
Enter Second Number: "
FontFamily="Verdana"
FontSize="22"
VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="326,6,0,0"
x:Name="textBox1"
VerticalAlignment="Top"
Width="130"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="326,84,0,0"
x:Name="textBox2"
VerticalAlignment="Top"
Width="130"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="60,179,0,0"
x:Name="textBlock3"
FontFamily="Verdana"
FontSize="22"
Foreground="Red"
VerticalAlignment="Top"
/>
<telerik:RadLayoutTransformControl
Height="354"
HorizontalAlignment="Left"
Margin="12,248,0,0"
VerticalAlignment="Top"
Width="438"
x:Name="radLayout1">
<telerik:RadLayoutTransformControl.Content>
<Grid>
<Button
Content="Addition"
x:Name="btnAdd"
Margin="73,0,58,271"
FontFamily="Verdana"
FontSize="22"
Background="Green"
Click="btnAdd_Click"/>
<Button
Content="Subtraction"
FontFamily="Verdana"
FontSize="22"
x:Name="btnsub"
Margin="73,70,58,201"
Background="Red"
Click="btnSub_Click"/>
<Button
Content="Multiplication"
x:Name="btnMul"
Margin="73,144,58,127"
FontFamily="Verdana"
FontSize="22"
Background="Yellow"
Click="btnMul_Click"/>
<Button
Content="Division"
x:Name="btnDiv"
Background="Blue"
FontFamily="Verdana"
FontSize="22"
Margin="73,233,58,38"
Click="btnDiv_Click"/>
</Grid>
</telerik:RadLayoutTransformControl.Content>
</telerik:RadLayoutTransformControl>
</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_Layout_Transform_Application.ServiceReference1;
using
Telerik.Windows.Controls;
namespace
Rad_Layout_Transform_Application
{
public
partial class
MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();|
this.Loaded +=
new RoutedEventHandler(mainPage_Loaded);
}
private
void mainPage_Loaded(object
sender, RoutedEventArgs e)
{
//objComposite.SkewX = 25;
objComposite.SkewY = 29;
radLayout1.LayoutTransform = objComposite;
}
private
void add_Call(object
sender, addCompletedEventArgs e)
{
RadMessageBox.Show("Addition Result is:
" + e.Result.ToString(), MessageBoxButtons.OKCancel,
"RadLayout Transform - WCF App",
null, false,
false,
System.Windows.HorizontalAlignment.Stretch,
System.Windows.VerticalAlignment.Center, null);
}
public
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,
"RadLayout Transform - WCF App",
null, false,
false,
System.Windows.HorizontalAlignment.Stretch,
System.Windows.VerticalAlignment.Center, null);
}
public
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,
"RadLayout Transform - WCF App",
null, false,
false,
System.Windows.HorizontalAlignment.Stretch,
System.Windows.VerticalAlignment.Center, null);
}
public 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,
"RadLayout Transform - WCF App",
null, false,
false,
System.Windows.HorizontalAlignment.Stretch,
System.Windows.VerticalAlignment.Center, null);
}
public 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();
CompositeTransform objComposite = new
CompositeTransform();
#endregion
}
}
Step 6: The output of the application looks like this:
Step 7: The output of the Nothing Entered Application looks like this:
Step 8: The output of the Addition Operation Application looks like this:
I hope this article is useful for you. I look forward for your comments and
feedback.