Windows Phone SDK 7.1 Beta 2 released: installation steps

Note : Content of this post is taken as it is from release note of Windows Phone SDK 7.1 . Please read release document more carefully. I have listed the breaking relase opints as it is from there. Original content is on relase note.

On 27th June 2011 Windows Phone SDK 7.1 Beta 2 got released.

 

clip_image001

 

You can download it from below link,

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26648

Release information is as below,

image

If you installed Windows Phone Developer Tools 7.1 Beta 1, you must uninstall it before installing Windows Phone SDK 7.1 Beta 2.

Few points ,

  1. There are many known issue in the release. So before installing read release document very carefully.
  2. There are many breaking changes like

 

  • Touch input for the ScrollViewer and ListBox controls happens on an independent thread by default, instead of on the UI thread.
  • Image decoding happens on a background thread by default, instead of on the UI thread.
  • The TaiwanCalendar class has been removed from the API.
  • The OnCancel override method was removed from the ScheduledTaskAgent class.
  • The IsRunningSlowly property was removed from the GameTimerEventArgs class.
  • IExecuteResult was removed from the Windows Phone OS 7.1 API.
  • The MotionReading property types have changed.
  • The Background Transfer Service folder in isolated storage was renamed.
  • Tile data in isolated storage must use the folder Shared\ShellContent.
  • The ShellTileEnumerator class was removed.
  • Background agents are not launched in the debugger by using the Add and Find methods.
  • The maximum and default database and buffer pool size values are now lower for SQLCE databases.
  • . Connection string parameters that are not supported are removed.
  • . Microsoft.Devices.YCrCbPixelLayout was renamed to Microsoft.Devices.YCbCrPixelLayout.
  • Microsoft.Devices.CaptureResolution was removed.

 

Installation of Winows Phone SDK 7.1 Beta 2

First uninstall Windows Phone SDK 7.1. Uninstall below items

  1. Windows Phone SDK 7.1 Beta
  2. Windows Phone Emulator (Beta)
  3. Microsoft Windows Phone Developer Tools 7.1

 

image

 

clip_image001

After uninstalling Beta 1 install Beta 2.

Screen shorts are as below Smile

clip_image002

 

clip_image003

 

 

clip_image004

 

 

clip_image005

 

clip_image006clip_image007

image

Enjoy with Windows Phone 7.1 Beta 2 Smile

 

 

 



----------------------------------------------------------

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to TwitterAdd to TechnoratiAdd to Yahoo BuzzAdd to Newsvine

Consuming OData in Windows Phone 7.1 or Mango Phone

Background

If you would have read my posts discussing WCF Data Service and Windows Phone 7, there were many steps involved in consuming WCF Data Service in Windows Phone 7

  1. Download OData client for Windows Phone 7 and add as reference in Windows Phone 7 project
  2. Create Proxy of WCF Data Service using svcutil.exe
  3. Add as existing item create proxy in Windows Phone 7 project.
  4. Performing the operations from Phone.

You can read previous article here

In Beta release of Windows Phone 7.1 or Mango phone consuming OData has been improved very impressively Smile essentially now you do not need to perform all the steps mentioned in previous articles.

OData URL

In this post, I will be using NorthWind OData URL. You can access that URL from below link.

http://services.odata.org/Northwind/Northwind.svc/

We are going to fetch Customers table from NorthWind DataBase.

Create Project and Add Service Reference

Create a new Windows Phone 7.1 project and choose target framework as Windows Phone 7.1

imageimage

Right click on project and add Service Reference

image

In Address you need to give URL of OData. As we discussed in previous steps, here I am giving OData URL of NorthWind Database hosted by OData.org.

image

Writing Code behind

Add below namespaces on MainPage.Xaml.cs page

clip_image001

Please make sure about second namespace. Since, I have added service reference of OData with name ServiceReference1 and name of project is ODatainMangoUpdated.

Globally defined below variables

image

In constructor of Page,

  1. Create instance of NorthWindEntities
  2. Create instance of DataServiceCollection passing context
  3. Write the LINQ query.
  4. Attach event handler LoadCompleted on DataServiceCollection object.
  5. Fetch the result asynchronously

image

On the completed event

  1. Check whether next page exist or not , if yes load automatically
  2. Set the DataContext of layout as result.

image

Design Page and Bind List Box

Here you need to create a ListBox and in Data Template put three TextBlock vertically. Bind the different columns of table to the text blocks

image

For your reference full source codes are given below. Feel free to use them Smile

MainPage.Xaml


<phone:PhoneApplicationPage
    x:Class="ODatainMangoUpdated.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="OData in Mango" Style="{StaticResource PhoneTextNormalStyle}"/>

        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            <ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,0,0,17" Width="432">
                            <TextBlock Text="{Binding Path=CompanyName}" TextWrapping="NoWrap"
                                       Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                            <TextBlock Text="{Binding Path=ContactName}" TextWrapping="NoWrap"
                                       Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                            <TextBlock Text="{Binding Path=Phone}" TextWrapping="NoWrap" Margin="12,-6,12,0"
                                       Style="{StaticResource PhoneTextSubtleStyle}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

        </Grid>
    </Grid>

</phone:PhoneApplicationPage>

MainPage.Xaml.cs


using System;
using System.Linq;
using Microsoft.Phone.Controls;
using System.Data.Services.Client;
using ODatainMangoUpdated.ServiceReference1;

namespace ODatainMangoUpdated
{
    public partial class MainPage : PhoneApplicationPage
    {
        private NorthwindEntities  context;
        private readonly Uri ODataUri = new Uri("http://services.odata.org/Northwind/Northwind.svc/");
        private DataServiceCollection<Customer> lstCustomers;

        public MainPage()
        {
            InitializeComponent();
            context = new NorthwindEntities(ODataUri);
            lstCustomers = new DataServiceCollection<Customer>(context);
            var result = from r in context.Customers  select r;
            lstCustomers.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(lstCustomers_LoadCompleted);
            lstCustomers.LoadAsync(result);

        }

        void lstCustomers_LoadCompleted(object sender, LoadCompletedEventArgs e)
        {
            if (lstCustomers.Continuation != null)
            {
                lstCustomers.LoadNextPartialSetAsync();
            }
            else
            {
                this.LayoutRoot.DataContext = lstCustomers;
            }

        }
    }
}

Run Application

Press F5 to run the application. You should get all the records from Customer table in List box.

image

I hope this post was useful. Thanks for reading  Smile

Photo Viewer in Windows Phone 7.1 or Mango Phone

In this post I will show you how to create a simple Photo Viewer? Before I start, I would like to inform you about a gray part of this post that all the Images are attached as a resource in the phone application and this is not recommended. We should have either image in Isolated Storage or should be downloading from remote Server.

Expected Output

imageimage

Idea here is very simple,

  1. Create Observable collection of Images
  2. Bind it to List Box.

Create Windows Phone 7.1 Application

Create Windows 7 Phone Application  and select platform as Windows Phone 7.1

imageimage

Right click and add a folder called Images. We are going to upload all the images in this folder. So after uploading all the existing images solution explorer would look like below,

image

I know sometime these screen shorts may be annoying but I do it purposefully  for the beginners Smile

 

Create Photo class

To bind images to the ListBox , let us create Photo class. Right click and add a class called Photo in the project.

Photo.cs

clip_image002

 

We have added the photos and created a Photo class to represent the Photos.

Now add below namespaces on MainPage.Xaml.cs

 

clip_image001

 

To bind a photo (image) to Image control, we need to provide ImageSource. So let us write a function taking as input parameter filename and retuning BitmapImage of that file name. Here we will pass filename of images we uploaded in Images folder.

 

clip_image003

Next we need to create collection of Images. I am creating observable collection.

 

image

 

You need to set ItemSource of ListBOX as output of above function.

 

clip_image001[5]

Here lstImage is name of the ListBox.

Design the Page

We are going to put a ListBox in content grid and inside ItemTemplate of ListBox , we will put Image control.

 

clip_image001[7]

As source of the Image you need to bind PhotoSource property of Photo class.

For Reference full source codes are given below. Feel free to use for your purpose  Smile

 

MainPage.xaml

 


<phone:PhoneApplicationPage
    x:Class="ImageinMango.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">
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text=" IClicked MVP OpenDays Photo on Mango" Style="{StaticResource PhoneTextNormalStyle}"/>
          </StackPanel>

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <ListBox x:Name="lstImage" Width="450" Margin="3,6">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding PhotoSource}"
                                   Width="425"
                                   Height="auto"
                                   Stretch="Uniform"
                                   HorizontalAlignment="Center" />
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>
    </Grid>
</phone:PhoneApplicationPage>


 

MainPage.xaml.cs


using System;
using System.Windows.Media;
using Microsoft.Phone.Controls;
using System.Collections.ObjectModel ;
using System.Windows.Media.Imaging ;

namespace ImageinMango
{
    public partial class MainPage : PhoneApplicationPage
    {

        public MainPage()
        {
            InitializeComponent();
            lstImage.ItemsSource = GetAllPhotos();
        }


        private ImageSource GetImageSource(string fileName)
        {
            return new BitmapImage(new Uri(fileName, UriKind.Relative));
        }

        private ObservableCollection<Photo> GetAllPhotos()
        {
            ObservableCollection<Photo> photos = new ObservableCollection<Photo>
                                                   {

                                                       new Photo{PhotoSource = GetImageSource("Images/AbhiM.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/AnandKH.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Harish.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/HarishV.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Abhi.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Suprotim.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/HarishVAlone.png")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Pinal.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Shaivi.jpg")},                                                       new Photo{PhotoSource = GetImageSource("Images/Shobhan.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Vikram.jpg")},
                                                       new Photo{PhotoSource = GetImageSource("Images/Host.jpg")}




                                                   };
            return photos;
        }
    }

}

 

Run the Application

Press F5 to run Photo viewer.  Smile

imageimg1

 

I hope this post was useful. Thanks for reading  Smile In further post , I will show you how to fetch Images from server instead of attaching them as resource.

Fetching Mobile Operator Name in Windows 7.1 Phone [Mango]

In this quick post I will show you,

How to fetch Mobile operator name in Windows 7 Phone?

Design the page

In content Grid, I have put a button. On click event of button, in message box we will display Mobile Operator Name

image

Write Code Behind

Add Namespace

clip_image001

On the click event of Button we will fetch operator name. Operator name can be fetched

clip_image003

Using calling CellularMobileOperator() function on DeviceNetworkInformation. After fetching , you can use it as string.

For your reference source code is as below,

MainPage.Xaml.cs


using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Net.NetworkInformation;

namespace MobileOperatorName
{
    public partial class MainPage : PhoneApplicationPage
    {

        public MainPage()
        {
            InitializeComponent();
            btnMobileOpeartor.Click += new RoutedEventHandler(btnMobileOpeartor_Click);
        }

        void btnMobileOpeartor_Click(object sender, RoutedEventArgs e)
        {
            string operatorName = "Mobile Opeartor : ";
            operatorName = operatorName + DeviceNetworkInformation.CellularMobileOperator.ToString();
            MessageBox.Show(operatorName);
        }

    }
}

Running the Application

Press F5 to run the application.

imageimage

I hope this post was useful. Thanks for reading Smile

Get Address from Contact in Windows Phone 7.1 [Mango]

In this post I will show you, how you could get Address from contact and Display it.

Expected Output

  1. On running of application you will get a button
  2. On click of button Contact list will be open
  3. On selection of a contact . address of that contact will be displayed in label.

imageimageimage

Design the page

I am going to put a very simple design. Design would have just one button and label.

On click event of the button, contact list would be open and on user selection of a contact, we will display address of that contact in label.  We are going to do very simple stuff . Don’t we ? Smile

Content Grid of MainPage.Xaml would be looking like below,

image

Write the Code

Add namespace

clip_image001

Globally defined a variable of type AddressChooserTask

 

clip_image002

 

In constructor of page create instance of AddressChooserTask and register completed event on that.

 

clip_image004

 

In the event, check whether TaskResult is equal to TaskResult enum OK. If yes then display name and address in label.

 

clip_image006

 

On click event of button, we will show the contact using addressChooserTask.Show

image

 

For you reference full source code of code behind is as below,

MainPage.Xaml.cs


using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;


namespace AddressChooser
{
    public partial class MainPage : PhoneApplicationPage
    {

        AddressChooserTask addressChooserTask;

        public MainPage()
        {
            InitializeComponent();
            addressChooserTask = new AddressChooserTask();
            addressChooserTask.Completed += new EventHandler<AddressResult>(addressChooserTask_Completed);

        }

        private void addressChooserButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                addressChooserTask.Show();
            }
            catch (System.InvalidOperationException ex)
            {

            }

        }

        void addressChooserTask_Completed(object sender, AddressResult e)
        {
            if (e.TaskResult == TaskResult.OK)
            {
                txtDisplay.Text = "The address for " + e.DisplayName + " is " + e.Address;
            }

        }
    }
}

Now when you run phone application you should get the expected output.

I hope this post was useful. Thanks for reading  Smile

RichTextBox in Windows Phone 7.1 or Mango

RichTextBox control is one of the most welcome controls in Beta release of Windows Phone 7.1 or Mango phone.

Beta version of RichTextBox control has come with many limitations  Sad smile

  • It is Read Only
  • Control does not appear in tool box
  • There is no default style.

There are two usual ways to add RichTextBox, one directly add on XAML as below,

 

image

Another in code as below,

clip_image004

If you just add RichTextBox in XAML and run application, surprisingly you will not get rendered RichTextBox on page Sad smile . This is due to absence of default style for RichTextBox.

So to work with RichTextBox we need to add Default Style for RichTextBox.  In below App.Xaml , I have added default style for RichTextBox.

App.Xaml


<Application
    x:Class="RichTextBox.App"
    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">

    <!--Application Resources-->
    <Application.Resources>

        <Style TargetType="RichTextBox">
            <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeNormal}" />
            <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="BorderBrush" Value="Transparent" />
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="Padding" Value="0" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="RichTextBox">
                        <Grid Background="Transparent">
                            <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Margin="{StaticResource PhoneHorizontalMargin}">
                                <ContentControl x:Name="ContentElement" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Padding="{TemplateBinding Padding}"/>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Application.Resources>

    <Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService
            Launching="Application_Launching" Closing="Application_Closing"
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
    </Application.ApplicationLifetimeObjects>

</Application>

 

 

After adding style for RichTextBox, on running you will get RichTextBox on phone as below,

image

To add button in RichTextBox , we need to put Button control inside InlineUIContainer like below .

image

To add an Undeline text we need to put text in Underline  tag

 

image

To add Image in RichTextBox we need to put Image in InlineUIContainer

 

image

After adding RichTextBox with different paragraphs containing Button , Image , Bold Text and Underlined text XAML would be as below ,

MainPage.xaml


<phone:PhoneApplicationPage
    x:Class="RichTextBox.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="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="page name" 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">
            <RichTextBox x:Name="rtxtbox" Margin="0,-84,0,0">
                <Paragraph>
                    <Bold Foreground="BLUE">Hey I am Blue and Bold !</Bold>
                </Paragraph>
                <Paragraph>
                    <InlineUIContainer>
                        <Image Source="Penguins.jpg" />
                    </InlineUIContainer>
                </Paragraph>
                <Paragraph >
                    Dhananjay Kumar is here on DebugMode
                </Paragraph>
                <Paragraph >
                    <InlineUIContainer>
                        <Button
                            x:Name="btnRch"
                            Content="RichTextBox Button "
                             Click="btnRch_Click" />
                    </InlineUIContainer>
                </Paragraph>
                <Paragraph>
                    <InlineUIContainer>
                        <Image Source="Penguins.jpg" Height="20" Width="30"/>
                    </InlineUIContainer>
                </Paragraph>
                <Paragraph>
                    <Underline>I am UnderLined</Underline>
                </Paragraph>

            </RichTextBox>
        </Grid>
    </Grid>

</phone:PhoneApplicationPage>

 

 

 

When you run phone application, you should get output as below,

image

 

Note:

In XAML if you will notice there are two paragraphs one for Button and one for Image. But in output those Image and Button is not getting displayed. In next post I would discuss on the same. And I if you get solution of this problem before me please write to me about your investigation  Smile

Thanks  for reading .

Windows Phone 7.1 [Mango] Beta released

clip_image001

I’m pleased to announce that the beta release of the Windows Phone Developer Tools that support Mango will be available for download today: Matt Bencke General Manager, Windows Phone Developer and Marketplace Experiences

Note: I took above image and statement from http://windowsteamblog.com

This was one of the most waited releases. You can download it from here.

On successfully installed Mango on your system, you will get below project templates under Silverlight for Windows Phone tab

clip_image003

You can choose target window version as well. Mango version is 7.1  Smile

clip_image004

New Features are as follows

1. New Back ground processing.

I am going to love this feature most. Now you can download a file in background while other application is running on foreground. It was not the case with WebClient

2. New Profiler and Emulator for testing

clip_image005

3. Location support

clip_image006

4. Silverlight 4.0 and integration of XNA with Silverlight 4.0 for better gaming experience

5. IE 9 as browser

clip_image007

6. Socket for communication

7. Local SQL for Structured  Data structure

8. Fast Application switching etc

If you want to work with demo code sample, You can go here

For learning in detail go here