Getting Started with WP7 Development: Learning Siverlight

This post aims to present a structured collection of resources for developers wanting to get started developing for Windows Phone 7 in Silverlight, but don’t have any Silverlight or WPF experience. I’m also aiming this post at peopleĀ  who’ve started developing for WP7 without too much WPF/Silverlight experience and would like to learn more about the framework to move on.

Why Silverlight?

Developing for Windows Phone 7 can be done using two frameworks: Silverlight and XNA. XNA is a framework targeting game development. Those who are looking to develop either games or graphically intensive applications are advised to use that framework.

Silverlight, on the other hand started off as a web application framework, a “web” light version of Windows Presentation Framework (WPF), the successor of Windows Forms. Microsoft decided to support Silverlight as the other application development framework on Windows Phone 7 next to XNA, specifically version 3.0 with some extra libraries. It’s safe to say that if one’s goal isn’t game development, the obvious (and easier) choice is to develop applications in Silverlight for WP7.

What is Silverlight?

Silverlight is a similar framework to Adobe Flash, allowing the developer to create applications that manipulate media, are interactive all built on the .NET platform. .NET developers will be familiar with lots of the libraries used, however Silverlight introduces several new concepts and libraries. With Out Of Browser support and Windows Phone 7 development announced, Silverlight is no longer just a web framework, but more an application development platform.

Some useful resources on understanding what Silverlight is:

Developer tools

Silverlight development can be done with Visual Studio 2008 and upwards, I’d recommend using Visual Studio 2010 – a free, express version is available for use. Expression Blend is an additional tool that makes creating the UI much easier.

If you’re planning on doing WP7 development, download the developer tools for WP7 which will either install the expression version of Visual Studio 2010 and a phone version of Expression Blend or if VS and Expression Blend are already installed, it will just add the new supported project types and the emulator.

Understanding how Silverlight Works

There are some key areas anyone from an OO background needs to understand to be able to develop with Silverlight.
Read More…

WP7 Cocktail Application Sneak Preview: Cocktail Flow

In the past weeks I’ve been working on some Windows Phone 7 applications to have them ready for near launch. One of them is Cocktail Flow. I’m developing this application in collaboration with Distinction. These guys are the same group of people who I’ve won worldwide 3rd place and special prize on the Microsoft Imagine Cup a few years ago.

We’re working hard to create an intuitive, useful and visually stunning application for anyone who enjoys cocktails. Here are some teaser screenshots of UI of the application:


Read More…

Why You Should Get Started With WP7 Development

Two weeks ago at TechMeetup I’ve talked about why I think Windows Phone 7 is a great opportunity for developers in five minutes. The people at TechMeetup – as always – filmed it and it’s available for viewing:

TM Talks-Gergely Orosz talks about Windows Phone 7 from TechMeetup on Vimeo.

My key points on why I think it’s worth to crack on with Windows Phone 7 can be summed up in these:

  • I think Windows Phone 7 has got everything to gain a decent marketshare in the near future: it’s UI is sexy, gamers will like it and Microsoft is committed to market it any way it can
  • The development experience is as easy as it gets. The barrier of entry for mobile development hasn’t been this low: all you need is download the great tools and have some understanding of OO programming
  • Because it’s so easy to get started developing, I think we’ll se a similar trends in application numbers as we’ve seen for iPhone and Android. If you’d like to gain attention, your chances are much better if you get your application out before the market is too crowded.
  • Based on this I’d suggest you crack on developing (I would also suggest stopping by for the (free) Windows Phone 7 talk late September in Edinburgh, but unfortunately all places have gone in two days!)

Problems when re-assigning a PathGeometry in Silverlight

I wasn’t planning in submitting (yet) another workaround for a Silverlight bug, but I stumbled across (yet) another annoying issue that causes no problems in WPF, but results in a exception being thrown in Silverlight. It definitely seems like another Silverlight bug still present in Silverlight 4.

The problem

I was building Paths by re-using a pre-built collection of PathGeometries. However when re-assigning a PathGeometry to another Path like this:

Path path1;
Path path2; // These paths are in the visual tree
// Create a PathGeometry with some points
var points = new PointCollection();
points.Add(new Point(100, 0));
points.Add(new Point(100, 100));
points.Add(new Point(0, 100));
 
var pathFigure = new PathFigure();
pathFigure.StartPoint = new Point(0, 0);
pathFigure.Segments.Add(new PolyLineSegment() { Points = points });
 
var pathGeometry = new PathGeometry();
pathGeometry.Figures.Add(pathFigure);
 
// Assign this PathGeometry to both Paths
path1.Data = pathGeometry;
// No you don't you get an ArgumentException
path2.Data = pathGeometry;

When trying to re-assign this PathGeometry, an ArgumentException was thrown with the message Value does not fall within the expected range. After googling around it turned out others have come across this issue back in mid 2008. This issue is only present in Silverlight, not WPF, which definititely suggests it is a bug.

However, having received a completely meaningless exception, I decided to dig deeper to at least try to understand what went wrong and find a workaround.
Read More…

Disappearing Style Setters in Silverlight 3 and WP7 – fixed in Silverlight 4

I’ve come across a really annoying bug in Silverlight 3 that seems to be fixed in Silverlight 4, but still present in WP7. When creating a Style object in runtime, then setting that as the Style of an element in the visual tree, the Value properties in the Setters of the original Style are set to null!

The problem

I’ve come across this issue because I was trying to clone styles with the following extension method:

public static Style Clone(this Style style)
{
    if (style == null)
        return null;
    Style clonedStyle = new Style(style.TargetType);
    clonedStyle.BasedOn = style.BasedOn;
    foreach (Setter setterToCopy in style.Setters)
    {
        clonedStyle.Setters.Add(new Setter()
        {
            Property = setterToCopy.Property,
            Value = setterToCopy.Value
        });
    }
    return clonedStyle;
}

As you can see, this clone method is not doing anything complicated: it is simply iterating through the Setters of the Style and creating new Setter instances with the Property and Value of the original Setters – basically deep cloning the Style itself.

The issue in Silverlight 3

When I did clone a Style that had been created on the fly and had been assigned a the Style of an element, the values of Setters magically were set to null in Silverlight 3. The problem is visualized using the following simple code:
Read More…

Setting the StrokeDashArray using a Style in Silverlight

I’ve recently ran into an issue: I wanted to draw an element with a dashed stroke using a Style I’ve created on the fly. To my surprise I couldn’t.

The Problem

The type of the StrokeDashArray (that is defined on Shape) is a DoubleCollection. So naturally I tried setting a DoubleCollection instance as the Value of the Setter on the Style I created:

Style ellipse2Style = new Style(typeof(Ellipse));
// Setting a DoubleCollection as the Value of the Setter for StrokeDashArrayProperty doesn't work!
ellipse2Style.Setters.Add(new Setter(Ellipse.StrokeDashArrayProperty,new DoubleCollection() { 2, 2 }));
Ellipse2.Style = ellipse2Style;

Read More…

Styles in Silveright – Data Binding, Runtime Declaration and Further Advanced Topics

I’m writing a 4 part series on everything (I think) is worth knowing about styles in Silverlight. The previous parts were Silverlight Styles: an Introduction and Silverlight Styles: Advanced Topics.

The third part of the series is ready and it covers the following topics:

You can read the detailed article on my Scott Logic blog – I hope you’ll find it useful.

The final part of the series will explore manipulating styles in runtime.

Styles in Silverlight – Advanced Topics

I’m writing a 4 part series on everything (I think) it’s worth knowing about styles. In the second part of the series (following the previous one Styles in Silverlight – an Introduction) I’m covering the following topics:

  • Re-Using Styles for Different Types: the TargetType of the Style can be a parent type of the target object as long as it only sets properties of the parent type.
    So for example the Fill property of both an Ellipse and Rectangle can be styled by using a Style that’s TargetType is set to Shape (as both Ellipse and Rectangle inherit from Shape)
  • Inheriting Styles using the BasedOn property: Styles can be inherited from one another using the BasedOn property. Single inheritance is supported and the depth of inheritance is not limited.
  • Implicit styling: Implicit styles allow defining a default style for all instances of a given type within the scope of the control. This feature has been introduced in Silverlight 4.
  • Style Precedence: Styles are only applied to a property if that property is not animated, has no local value set and has no value set in a template. This precedence is the same as the dependency property precedence.
  • Style Setter Precedence: setters specifying the value of the same property may be declared within the same Style. The last one of them has the highest precedence and will be used.
  • You can read the (much more detailed) full article on my Scott Logic blog. The next part of the series will cover further advanced topics such as using Styles in code behind and exploring the relationship between styles and dependency properties from a practical perspective.

Styles in Silverlight: an Introduction

I’m writing a (planned) 4 parts series on everything I think it’s worth knowing about styles in Silverlight. The first part is ready and it covers the following topics:

You can read the (much more detailed) full article on my Scott Logic blog. This part has meant to be an introduction, the next parts will dig into more advanced Style usage scenarios.

World Cup 2010 Real-Time Push Web App Competition Winner!

A month ago Kwwika, a real-time data streaming service provider annonced a competition to build a mash up that uses their World Cup 2010 Twitter streams. I’ve decided to enter the competition and visualize the stream of tweets in a fun and engaging way. As the competition closed on 11th July, my entry was selected as one of the winners!

tweetforyourteam

My entry, Tweet For Your Team shows the tweets of the two teams simultaneously. It measures the live intensity of the tweets (how many are written per minute for each team) and also analyzes their mood by matching keywords and using simple rules to decide whether a tweet carries positive or negative emotions for the team.

The entry also allows visitors to get involved and cheer for or against their team with a single click sending a shout visible to other users off the application. See this post on further details on the application functionality.

Winners of the competition were announced just before the World Cup 2010 final and I was happy to see my entry being selected one of the two winners. As the judging panel wrote in their summary:
“Gergely created a really engaging application that you could easily sit and watch and interact with during any live World Cup match.” And “The performance of the application is really impressive considering tweet rates for Spain alone have been seen to hit 3500 tweets per minute.”

You can read more about the application in the following previous posts:

And of course you can see it in action at TweetForYourTeam.com!

1 2 3 4 5 8  Scroll to top