Colin Eberhardt

I am Technology Director at Scott Logic and am a prolific technical author, blogger and speaker on a range of technologies. For a number of years I worked with the Microsoft stack of technologies, including WPF, WCF, Silverlight and Windows Phone. More recently I have diversified to include HTML5, JavaScript and iOS development.

Articles

Recursive Pattern Matching and Transformation of JavaScript AST

I’ve recently been playing around with the JavaScript Abstract Syntax Trees (AST), with the aim of transforming some JavaScript code into various other languages (Java, C#, Objective-C). As part of my research, I looked at how Babel performs AST transforms. If you’re not familiar with Babel, and the plugins...

Six tips for cleaner javascript promises

This blog post shares a few quick tips and patterns that I've been using to structure JavaScript promises; keeping them clean, simple and readable.

Applying redux reducers to arrays

The redux pattern provides a simple (and strict) pattern for managing state; a single store holds the state while a reducer applies actions, evolving the application state. As your app becomes more complex, you can split up your reducer into separate functions, however, what if you have multiple instances...

Automating Expenses With the Mondo API

Mondo Bank has recently moved into public Beta, sending out 1,000 cards to trial customers each week. I received my Beta card a few days ago, and have been using it ever since. This blog post takes a quick look at the Mondo API and how I used it to automate expense claims!

Binding with Bond

Swift Bond is a binding framework that removes the mundane task of wiring up your UI. In this tutorial, which was originally published on Ray Wenderlich's website, I introduce the concepts of Bond and demonstrate how to use it to rapidly build an iOS app.

Angular 2 Time Travel with Redux

This post looks at integrating Angular 2 with Immutable.js and Redux, a popular Flux store implementation. It also demonstrates that the functional approach, encouraged by these technologies, allow for powerful concepts such as time travel, where you can replay actions and application state.

Angular 2 with Immutable.JS

Angular 2.0 introduces a component-based approach to building applications, where the rendering can be optimised by selecting a suitable change detection strategy for each component. This post looks at how the OnPush change detection strategy works quite elegantly with the concept of immutable objects as enforced by Immutable.js.

Creating an Angular 2 build with Gulp, TSLint and DefinitelyTyped

From my perspective Angular 2 is a great improvement over Angular 1. The framework is simpler, and as a result your code is more concise, making use of modern JavaScript concepts. However, this does come at a cost; with Angular 2 the required tooling is really quite complicated.

Building a todo list application with Angular 2.0

This blog post takes a step-by-step approach to building a simple todo-list application with Angular 2.0. Along the way we'll look at web components, dependency injection, TypeScript, bindings and the Angular 2.0 change detection strategy which combine to make a much more elegant framework to its predecessor.

Rendering ASCII Charts with D3

A few days ago Bloomberg published their list of 50 companies to watch in 2016, and for some reason they decided to publish the entire report in ASCII! I thought it would be a bit of fun to see if I could use D3 to create my own ASCI charts

Improving Grunt Performance

JavaScript builds are getting more complex and time consuming. This blog post shares a few steps I took to improve the performance of one of our project's grunt build, hopefully some of the tools I used will be of use to others.

Creating a Yahoo Finance chart with D3 and d3fc - Part Two

Most charting libraries are monoliths. The more features they support, the more unwieldy their APIs tend to become. With the d3fc project we have been exploring an alternative approach, constructing charts from a set of small components, using the D3 library.

Creating a Yahoo Finance chart with D3 and d3fc

Most charting libraries are monoliths. The more features they support, the more unwieldy their APIs tend to become. With the d3fc project we have been exploring an alternative approach, constructing charts from a set of small components, using the D3 library.

MVVM With ReactiveCocoa 3.0

This is my final article on ReactiveCocoa 3.0 (RAC3), where I demonstrate some more complex RAC3 usages within the context of an application built using the Model-View-ViewModel (MVVM) pattern.

ReactiveCocoa 3.0 - Signal Producers and API clarity

My previous blog post took a first look at ReactiveCocoa 3.0 (RC3), where I described the new Signal interface, and the pipe forward operator. In this blog post I continue my exploration of the RC3 APIs and turn my attention to signal producers. I also discuss a few points around the overall clarity of the new ReactiveCocoa APIs.

A First Look at ReactiveCocoa 3.0

This blog post takes a look at the new ReactiveCocoa 3.0 swift interface, which introduces generics, a pipe-forward operator and an interesting use of curried functions.

Introducing React Native

A few months ago Facebook announced React Native, a framework that lets you build native iOS applications with JavaScript. I've been spending the past couple of months building am app with this framework, which I have finally been able to share!

Retrospective on Developing an application with React Native

I've been building a React Native app for the past few months, which was published as a tutorial yesterday. A number of people have asked about my thoughts and opinions about React Native - which I am sharing in this blog post.

Implementing React.js in Swift

This blog post explores the novel approach taken by the React.js team, where the UI is expressed as a function of the current application state, and re-implements it with Swift.

Exploring KVO alternatives with Swift

Swift has access to all of the Objective-C APIs, which means that anything you could do with Objective-C you can now do with Swift. However, there are times when it is worth exploring a better, pure-Swift, alternative. This post explores the pros and cons of KVO versus a couple of Swift alternatives.

Implementing Events in Swift

Swift does not have a built in eventing mechanism. This post explores a few different ways events can be implemented in Swift and how to avoid problems of retain cycles and closure reference equality.

SVG layout with Flexbox for simpler D3 charts

This blog looks at how CSS flexbox layout can be applied to SVG in order to simplify the task of constructing charts with D3. This approach has been made possible by the JavaScript flexbox implementation that Facebook recently open sourced to support ReactJS Native.

Exception Handling in Swift

Swift doesn’t support throwing exceptions, nor does it support catching them. This wouldn’t be a problem if you could develop iOS apps in pure Swift, but unfortunately at the moment you cannot. When developing an app most of the APIs you’ll be working with are Objective-C APIs that have been...

Tearing Down Swift's Optional Pyramid of Doom

This blog post looks at a few techniques that can be used to remove the deeply nested if-let statements that are a common sight in Swift code.

Swift Initialization and the Pain of Optionals

Swift's strict initialisation process results in a number of practical issues, leaving developers scratching their heads. This post explores a few solutions including two-phase initialisation, the use of optionals and lazy properties.

Binding mutable arrays with ReactiveCocoa

This post describes a binding helper that allows you to bind arrays directly to table views with ReactiveCocoa. In this update to my previous post, the helper is extended to support mutable arrays.

Mandelbrot Generation With Concurrent Functional Swift

This post show how the simple task of computing a Mandelbrot set can be split up across multiple threads (and processors) using functional techniques.

Jekyll Pagination and Infinite Scroll

Recently I updated the Scott Logic blog to implement infinite scrolling using a combination of Jekyll pagination and jScroll. Both of these components are quite fussy about their respective configuration, meaning that integrating them took longer than expected. I thought I'd share my solution in this blog post, hopefully saving others from the hours I spent digging into jScroll code or cursing Jekyll!

Swift and the curious case of AnyObject

Swift, as I am sure you are aware, is quite a strict, safe and strongly-typed language. However, because the language needs to maintain Objective-C compatibility it has some rather curious features, and the behaviour of `AnyObject` is one of them!

Functional Swift and Memoization

This post is a continuation of my previous which looked at implementing Conway’s Game of Life using functional techniques. Here I look at how memoization can be used to cache the return value of a function in order to improve performance.

Swift By Tutorials is Published

Apple released the first public beta of the Swift programming language just over three months ago. Within days of the release myself and Matt Galloway started working on our book Swift by Tutorials, which as of yesterday is finally finished and shipping!

The Game of Life with Functional Swift

This blog post shows an implementation of Conway’s Game of Life using functional techniques in Swift. This results in code which is a clear and concise representation of the game’s logic. I also take a closer look at ranges, intervals, the pattern match operator, ~= and how local functions...

Swift Adoption Statistics

It was just two months ago that Apple took us by surprise in releasing the Swift programming language. This blog post reflects on the first few months of Swift adoption.

MVVM, Swift and ReactiveCocoa - It's all good!

This blog post looks out how Swift makes the combination of ReactiveCocoa and MVVM even better ...

A Statistical Comparison of the iOS and Android Stores

A few months ago I published a blog post which showed the results of analysing the meta-data of 75,000 apps from the iTunes App Store. This blog post continues the analysis by adding 60,000 Android apps into the mix.

MVVM with ReactiveCocoa

I've recently had a two-part tutorial published on Ray Wenderlich's website that details how ReactiveCocoa can be used to implement the MVVM pattern within iOS applications.

Swift Sequences and Lazy Evaluation

In this blog post I want to take a quick look at the Swift Sequence protocol, which forms the basis for the for-in loop, and see how this allows you to write code that performs sequence operations that are only evaluated on-demand.

White Paper - HTML5 At Enterprise Scale

Moving from desktop or plugin technologies (Flex, Silverlight, Java Applets) to HTML5 is a challenge for developers of large-scale enterprise applications. This White Paper discusses the challenges and offers potential solutions.

Binding to a UITableView from a ReactiveCocoa ViewModel

This blog post presents a simple utility class for binding ReactiveCocoa ViewModels to UITableViews without the need for the usual datasource / delegate boiler-plate.

A Colour Analysis of the Apple App Store

This blog post presents the result of analysing 250,000 screenshots from the Apple App Store, looking at hue, lightness and saturation histograms for each category.

A Statistical Analysis of the Apple App Store

The App Store continues its rapid growth, with approximately 300,000 apps added each year. I decided it would be fun to download as much app metadata as possible in order to see what patterns and trends I could find. This blog post describes the results.

Simulating Accelerometer and Location data for iOS

This blog post looks at how to simulate accelerometer and location data so that you can test iOS apps without the need for a physical device. The simulated data is provided by an interactive UI which allows you to rotate the phone and mark paths on a map which can then be replayed.

ReactiveCocoa - The Definitive Guide

It feels like everyone in the iOS community is talking about ReactiveCocoa at the moment. In this blog post I talk briefly about what ReactiveCocoa is and the 'Definitive Guide' which I wrote for raywenderlich.com

PropertyCross 1.3 Released

PropertyCross has just announced a v1.3 release, which includes two new frameworks, a number of updates and an improved build system.

iOS 7 By Tutorials In Print

The book, iOS 7 By Tutorials, which I contributed four chapters to, is now in print.

Understanding JavaScript Object Creation Patterns

This article explores the various ways you can create objects with the JavaScript language, and through this exploration finds that there is much to learn about the language!

An Interactive Tab Bar Controller Transition

This blog post looks at creating an interactive tab bar controller transition, where you can swipe left and right to navigate between the tabs. The transition itself is a 'paperfold' effect - very pretty!

Creating a custom flip view controller transition

With iOS 7 Apple introduced a new set of APIs for creating custom View Controller transitions. In this blog post I look at how to create a custom 'flip' transition, giving the impression of a turning page.

iOS 7 by Tutorials - the first iOS 7 book - is published

For the past four months I have been hard at work writing four chapters for a book, iOS 7 by tutorials. Just yesterday, as the iOS 7 NDA was lifted, the book went on sale.

Windows Phone App Studio - Shows Potential ...

A couple of days ago Microsoft announced Windows Phone App Studio, a web based tool for the rapid creation of Windows Phone applications. In this blog post I take this new technology for a spin to see what it's capable of, and the interesting potential it has for creating 'personal' apps.

New iOS Article - How To Make a Custom Control

My latest iOS development article has been published on Ray Wenderlich's site, this time I look into how to develop custom iOS controls. The article describes the creation of a 'range' slider control, and covers topics such as API...

ReversiEight - A Windows 8 Reversi Game

For the last six months or so I have been deeply immersed in a combination of iOS and HTML5 development. Now I don't want my C#/XAML skills to get too rusty, so over the weekend I decided to write a simple Windows 8 Store App. You can see the results...

HTML5 - It Just Got Real - Slides

A couple of days ago we hosted a one-day conference, HTML5 - It Just Got Real, at the Royal Society buildings in London. As promised, we have made all of our presentations available online.

Enhanced Windows Phone 8 Map Gestures

This blog post describes the addition of a two-finger rotation and three-finger pitch gesture to the Windows Phone 8 Map control. You can see these gesture in action below: The WP8 release replaced the image-tile based Bing maps with a fully vector-rendered map from...

Comparing KendoUI and Knockout (with a bit of jQueryMobile on the side)

This blog post compares the same twitter search application written with both Knockout and Kendo in order to highlight the strengths and weaknesses of each framework. Introduction I've always been a big fan of Knockout, most likely because it reminds me...

HTML5 - It Just Got Real - A One-day Conference in London 14th May

Announcing a one-day conference at the Royal Society, London UK, on the 14th of May. Just a few years back I wrote a white paper titled "Flex, Silverlight or HTML5? Time to decide ..." with the help of a...

Windows Phone 8 Running App Article wins CodeProject competition

I've just received an email from those nice folks at CodeProject letting me know that my article 'A Windows Phone 8 Run Tracking App in 100 Lines of Code' has just won the Best Mobile article of January 2013 award.

Linq to Objective-C

In the past few months I have been immersing myself into the world of iOS development. Whilst the Objective-C language takes a little getting used to, with its odd syntax and memory management rules, it is certainly a fun platform to develop for. I do miss a few C# language...

CodeProject MVP 2013

Earlier today I received an email informing me that I have been awarded a CodeProject MVP for the year 2013. I am very grateful to CodeProject for this award - it is a very popular website for developers, with around 10 million members, and thousands of authors. It is an...

CodeProject Article on Xamarin Cross Platform Development

Yesterday I published a new article on CodePrioject: Property Finder - a Cross-Platform Xamarin MonoTouch Mobile App This article looks at how you can write a cross-platform mobile application with a shared C# code base using Xamarin MonoTouch. The application that is described in the article, a...

Introducing PropertyCross - Helping you select a cross-platform mobile framework

Introduces a new open source project that helps developers choose a suitable cross-platform framework

A Multicast Delegate Pattern for iOS Controls

This blog post introduces a simple pattern for adding multicasting capabilities to existing iOS controls. Adding multicasting allows for improved clarity and code re-use. Colin Eberhardt is CIO at ShinobiControls, suppliers of highly interactive and fun charts,...

Ray Wenderlich and My Adventures in iOS

The technologies that we use to write applications for our end users are changing at a frightening pace! Over the past few years the title of my blog has changed from "Adventures in WPF" to "Adventures in .NET", and more recently to the very generic "Adventures in Technology". The latest...

Integrating Knockout and jQueryMobile

This blog post looks at the issues regarding integration of KnockoutJS and jQueryMobile, and provides a simple worked example - a Twitter Search application - where the two technologies play nicely together! The code for this blog post can...

Clearer - A Gesture-Driven Windows 8 To-Do Application

A couple of days ago a published a new article on CodeProject, this latest article tackles the migration of a gesture-drive application from Windows Phone to Windows 8: "I had fun porting my gesture-driven to-do list application to...

Gesture-Driven To Do List Article Wins CodeProject Monthly Competition

I have just found out that my article "A Gesture-Driven Windows Phone To-Do List" won first place in the July 2012 best mobile article category. Thanks CodeProject, looking forward to receiving my collection of goodies - especially the...

Property Finder - A Cross-platform HTML5 Mobile App

A while back, when PhoneGap for Windows Phone was still in beta, I created Property Finder, an application for searching UK property listings. This application successfully made its way into the Windows Phone Marketplace, making it the first WP7...

Book Review: iOS Programming for .NET Developers

A couple of weeks ago Josh Smith published his latest book, "iOS Programming for .NET Developers", which seeks to ease the transition from .NET to iOS developers. As someone who has many years of .NET experience, and more recently a desire to develop for 'the other side', I thought...

A Gesture-Driven Windows Phone To-Do List - Complete Example

Over the past few weeks I have been working on a Windows Phone to-do list application, inspired by the iPhone Clear app. I have just published the final application over on codeproject. You can see it in action below: Pop over...

An Introduction and Thoughts on Developing iOS Applications with MonoTouch

This blog post describes the creation of a simple twitter search application for iOS, based on a similar application I wrote for Windows Phone a few months back. In this blog post I'll used the MonoTouch platform, which allows you to write iOS applications using C#. This blog posts describes...

The Higgs Boson, Comic Sans and my 15 minutes of Twitter fame

It's been a busy Twitter day for me. A reasonably inane tweet that I posted this morning pointing out that the announcement of the (potential) Higgs Boson discovery was written using the much derided Comic Sans font has been retweeted thousands of times, and has been the top tweet for...

A gesture-driven Windows Phone to-do application Part Two - drag re-ordering

A couple of weeks ago I blogged about a todo list application which uses gestures to achieve its basic functions, a left swipe deletes an item, while a right-swipe marks it as complete. In this blog post I am adding re-ordering which is...

A Developer Perspective on Windows Phone 8 - An Update

My blog post from yesterday "A Developer Perspective on Windows Phone 8" sparked a bit of furious debate on Twitter. I think it is fair to say that I was not the only one who was quite concerned about the impact of...

A Developer Perspective on Windows Phone 8

This blog post takes a look at what Windows Phone 8 (WP8) means for Windows Phone 7 (WP7) developers and the Microsoft development platform in general. This has been a big week for Microsoft; Monday saw them unveil the new...

Microsoft Surface vs. Apple iPad - a Visual Comparison

In this post I present a graphical comparison of the Microsoft Surface and Apple iPad tablets

A gesture-driven Windows Phone to-do application

This blog post describes the implementation of a gesture-based todo-list application. The simple interface is controlled entirely by drag, flick and swipe: So far the application supports deletion and completion of tasks, but not the addition of new ones. I'll get to this in...

Introducing the jQuery Mobile Metro Theme

This blog post introduces the new jQuery Mobile Metro theme and demonstrates how to create a web UI that detects the device it is being viewed on, to render a Metro UI on WP7 and iOS on other devices

WPF Charting Performance Comparisons (the Battle Continues)

This blog post presents a thorough analysis of the performance of various WPF Charting components. The results show that a new class of charting solutions, which use raster-based graphics as opposed to retained mode vector graphics, provide a considerable performance advantage

Everything you wanted to know about databinding in WPF, Silverlight and WP7 (Part Two)

Introduction This is the second post in my series about databinding in Silverlight and WPF. In the first post I looked at how you wire-up UI controls to a model in the absence of a databinding framework. I showed how databindings can be created in code-behind, removing the need...

KnockoutJS vs. Silverlight - a new CodeProject article

I have just published a new article over on CodeProject called "KnockoutJS vs. Silverlight". It demonstrates the implementation of the same application using both frameworks, and seeks to answer the question "Which is better, Silverlight or Knockout?" It's a bit of...

Everything you wanted to know about databinding in WPF, Silverlight and WP7 (Part One)

OK, so the title is a little ambitious, but there is nothing wrong with setting yourself lofty aims! Because of the depth of this topic I have decided to split this tutorial up into a series of blog posts, each of which explore a different aspect of the binding framework....

Developing a GWT TodoMVC application

This blog post describes my experiences of developing a simple Todo application with Google Web Toolkit (GWT), that I have contributed to the JavaScript TodoMVC project, which compares the implementation of the same application with various JavaScript frameworks. This blog discusses why I chose GWT, the compromises and benefits of...

Plotting Circular Relationships Graphs with Silverlight

I have just published a new article on codeproject, which describes the creation of a Silverlight custom control for plotting the relationships between a network of nodes. Head over to codeproject and take a look! Visualisation of Eurozone...

Slides and code from my WPUG talk on PhoneGap

Yesterday I presented a talk at the London-based Windows Phone User Group on the development of cross-platform mobile applications using PhoneGap. Here are my slides from the presentation: And here is the twitter search application I demoed: PhoneGapTwitterSearch.zip...

Visualising StackOverflow Tag Relationships with Silverlight

UPDATE: I have posted the sourcecode for this control on codeproject. Recently I have been wondering about the wealth of information that can be gleaned from the 2.5 million programming question on Stack Overflow. A few weeks back I found a tag trending tool, which can be used...

The Gradual Decline in Silverlight Adoption

Around one year ago I made the prediction that Silverlight would have an overall adoption of 81% by the end of 2011. The adoption statistics are now available and indicate that my predictions were wrong by more than 10%, with Silverlight adoption reaching just 67% at the start of this...

WPUG Talk: Developing cross-platform mobile applications with PhoneGap for Windows Phone 7

In a couple of weeks I will be giving a talk on using PhoneGap for cross platform mobile application development at the WPUG #NotAtMWC12 event on Tuesday, February 28, in London. This post gives a brief overview of my talk and a video.

A Simple Pattern for Creating Re-useable UserControls in WPF / Silverlight

This blog post provides step-by-step instructions for creating a user control, which exposes bindable properties, in WPF and Silverlight. The post covers dependency properties, and how to manage DataContext inheritance. When building user interfaces you will often find yourself repeating the same UI patterns across your application. After all, users...

WP7 PhoneGap Backbutton Support Re-visited

About a month ago I published an article which demonstrated how to create a WP7 application using static HTML pages and PhoneGap. Whilst PhoneGap makes the packaging of HTML / JavaScript / CSS and images into a breeze, one thing it...

Windows Phone 7 - Browsing your Photos via Bing Maps

The Windows Phone 7 camera gives you the option to record the location where a picture was taken (under Settings => applications => pictures+camera). With this feature turned on, each application has their latitude, longitude and altitude stored as part of the standard EXIF data. I thought it would...

Proud to be a CodeProject MVP 2012

I have just received an email from Chris Maunder, co-founder of CodeProject, informing me that I have been awarded CodeProject MVP status for 2012.

FastClick for WP7 - Improving Browser Responsiveness for PhoneGap Apps

I recently released an update of the HTML5 / PhoneGap application I wrote a few months ago to the marketplace. This update fixed the location detection issue, where the marketplace certification process failed to detect that the application was using geolocation data via the browser (this issue has been...

A Festive and Fun Windows Phone 7 Maze Game

Last night, with my Christmas presents all wrapped and a lack of any decent programmes (festive or otherwise) on television, I had a few hours to kill, so decided to create a festive-themed WP7 game ... Ever since I first started writing code for Windows Phone 7 I have wanted...

A Metro Themed PowerPoint Template

Over the weekend I mentioned on Twitter that I had created a Metro-style PowerPoint template. There were a few requests to share, so hence this blog post. Scroll to the bottom to download the PowerPoint file. So why create a...

A Simple Multi-Page Windows Phone 7 PhoneGap Example

This blog post shows how you can use PhoneGap to create Windows Phone 7 applications that are comprised of multiple, simple HTML pages, whilst meeting the Marketplace certification requirements. Colin Eberhardt is a Scott Logic technical Evangelist and...

A Windows Phone 7 Slide View with Page Pips

A popular user-interface in the iOS world is the UIPageControl which renders a small set of dots to indicate the number of pages, with the current page highlighted in some way. This is often used in conjunction with a UIScrollView to navigate between pages in a multi-page layout. Windows...

Handling the back-stack in Windows Phone 7 PhoneGap applications

Recently I have been researching the use of PhoneGap for creating HTML5 Windows Phone 7 applications. I have written an introductory post on the subject and also managed to have a

Pushpin Clustering with the Windows Phone 7 Bing Map control

This blog post provides a simple utility class that will cluster pushpins on a Bing Map control. This utility provides a way to achieve great performance with 1000s of pushpins. The Bing Map control for Windows Phone 7 is a versatile control, allowing you to provide your users with an...

Suppressing Zoom and Scroll interactions in the Windows Phone 7 WebBrowser Control

This blog post describes a simple helper class that can be used to supress scrolling and pinch zoom of the Windows Phone 7 WebBrowser control. Colin Eberhardt is a Scott Logic technical Evangelist and a Technical Architect for...

The Untimely Demise of the Plugin (and how LOB developments will suffer)

It has been another interesting week for HTML5 and front-end technologies. We have seen Adobe abandon work on mobile versions of the Flash plugin, news of Silverlight 5 being the last version of the Microsoft plugin and more recently an announcement that Adobe will no longer develop Flex, its enterprise...

An Introduction to Semantic Zoom in Windows 8 Metro

With the new Metro UI, Windows 8 has firmly embraced the tablet form-factor, with the interface tailored for touch and multi-touch interactions. Many of the Metro concepts familiar to Windows Phone 7 (WP7) developers are also present in Windows 8. Watching the vieos from the //build/ conference you can see...

Property Finder - the first HTML5-based Windows Phone 7 Application

Last week I submitted Property Finder, a simple application that searches for properties based in the UK, to the Windows Phone 7 Marketplace. I was happy to receive confirmation that this application had been certified and published just two days later. You can download the application from the marketplace...

Tombstoning with PhoneGap for Windows Phone 7 (and KnockoutJS)

A few weeks back I wrote a blog post about how the recent announcement of PhoneGap support for Windows Phone 7 (WP7) which makes it possible to develop HTML5-based applications. In my previous blog post I showed the development of a...

Codeproject September Competition - Scored a Double!

I have just received an email from Codeproject - my article on XAMLFinance, a cross platform Silverlight, WPF and WP7 application, has won Best C# and Best Overall article competitions for September. Having narrowly missed out in the...

Adding Error Bars to Visiblox Silverlight Charts

Having spent a number of years studying Physics at university, I have had the importance of error bars well and truly drummed into me! Within physics, or any experimental science, there are always going to be errors in the measurements you make. The more repeat measurements you make, the more...

Paging Data from the Server with Silverlight

This blog post provides an implementation of IPagedCollectionView which allows paging of data from the server. An IPagedDataSource is introduced that allows any paged data source to be plugged in, with the standard controls such as DataPager making it easy to create paging applications. With web-based applications, bandwidth constraints often...

WinRT Transitions - Creating Fast and Fluid Metro UIs

This blog post looks at the new concept of 'transitions' that WinRT, within Windows 8, introduces. This concept makes it very easy for you to create a fluid and interactive UI without going anywhere near storyboards! I have to admit it, I am a big fan of the Metro...

Using ObservableCollection with WinRT (via a little shim!)

WInRT introduces a new interface for collection change notification, IObservableVector, which means ObservableCollection no longer works with this framework. In this blog post I will show how you can use ObservableCollection, via a simple adapter, within you WInRT applications. <ItemsControl ItemsSource="{Binding Path=MyCollection, Converter={StaticResource ObservableCollectionAdapter}}"

A Windows Phone 7.1 (Mango) MVVM Tombstoning Example

In this blog post I look at the new application lifecycle model that Windows Phone 7.1 (Mango) introduces, and show how to handle the various lifecycle events in a simple MVVM application. In a previous blog post I described the development...

Developing Windows Phone 7 HTML5 apps with PhoneGap

This article show the step-by-step development of a Windows Phone 7 HTML5 application using PhoneGap. It also looks at how viable this approach is for cross-platform mobile development. Colin Eberhardt is a Scott Logic technical Evangelist and a...

Building Windows Phone Apps - a free WP7 eBook

I've just had an email land in my inbox from Microsoft's Mike Ormond, announcing that the Windows Phone 7 book that I contributed a couple of chapters to (Introduction and Tools), has finally been published! This is a collaborative...

XAML Finance - a cross-platform WPF, Silverlight, WP7 application

I have just published a new article on codeproject which describes the development of XAMLFinance, a cross-platform application for the desktop (WPF), web (Silverlight) and phone (WP7). Head over to codeproject to read about the development of...

TweetSearch - A Cross platform Metro UI WinRT and Silverlight Application

With the Windows 8 preview release earlier this week, developers are now faced with a whole new and exciting Microsoft stack. The Windows 8 architecture has something of a split-personality, incorporating a completely new runtime, WinRT together with the older Win32 and .NET framework. However, these sit on different sides...

Windows 8 - An OS of two halves.

In this blog post I take a look at Windows 8 on the outside, from a user perspective; and on the inside, from a developer perspective to see how it will change the way we develop with Windows on tablets, smartphones and the desktop when it is released next year....

Dart - will Google make HTML5 applications viable?

Just a few weeks ago I wrote a blogpost "Can Microsoft 'fix' JavaScript and make HTML5 applications viable?", where I described some of the issues with JavaScript and how these could be solved by Microsoft if they wrote a C# to JavaScript compiler. Just a couple of days ago...

Can Microsoft 'fix' JavaScript and make HTML5 applications viable?

Microsoft's recent change in stance over Silverlight, promoting HTML5 as "the only true cross-platform solution for everything", seems to have sidelined Silverlight as a niche framework. This has understandably caused a great deal of upset and confusion in the .NET development community. Despite this, Microsoft are remaining steadfast and...

Talk on Cross-Platform XAML Applications @NEBytes

I am happy to have been invited by NEBytes to give a talk on cross-platform XAML applications later this month. The event kicks off at 6:30pm on August 17th at Room 120, Claremont Tower, Newcastle University, with the event including both my presentation and a talk on Office 365...

Implementing a Windows Phone 7 Conversation View Part Two

This blog post describes how to implement a conversation / messaging style application with Windows Phone 7. It covers how to style the speech bubbles and the scrolling of the conversation list view when the phone keyboard is shown. A couple of weeks ago I wrote a blog post which...

Capturing Windows Phone 7 Panorama Images

The Windows Phone 7 Panorama control is widely used in applications and to many has come to symbolise the Metro Design Language. Search for panorama images and you will find numerous promo-shots of Windows Phone 7 applications which display the panoramic contents of the application hub, with an image...

Implementing a Windows Phone 7 Conversation View

This blog post looks at how to to create a conversation view, mimicking the SMS messaging interface within Windows Phone 7. This post shows how we can select different DataTemplate for each item in an ItemsControl to achieve this effect. The Windows Phone 7 SMS messaging interface graphically illustrates between...

Silverlight UK User Group Presentation on Cross Platform XAML

Earlier this week I presented a talk to the Silverlight UK User Group on cross-platform application development with WPF, Silverlight and Windows Phone 7. Thanks to Gergley Orosz for these pictures Thanks to all who attended my talk....

From Silverlight to HTML5 CodeProject Article

I have just published an article on codeproject which describes the differences in development between Silverlight and HTML5. In order to illustrate the differences, I have re-implemented my Windows Phone 7 JumpList control using HTML5/CSS3. You can see this control in action below: ...

Visiblox MVP Giveaway

Readers of my blog will probably have noticed that I have a keen interest in both charting and performance. My friends over at Visiblox have combined these both to create what is one of the fastest charts for WPF, Silverlight and Windows Phone 7, see my recent benchmark...

Metro In Motion #8 - AutoCompleteBox Reveal Animation

When I started the Metro In Motion series, I thought I would probably post three or four articles and be done. However, every time I use my Windows Phone 7 I seem to spot a new 'native' fluid UI effect which I would like to use in my own code....

Metro In Motion Part #7 - Panorama Prettiness and Opacity

This blog post details a simple metro-in-motion behaviour which reduces the Panorama control's contents while the user slides from item-to-item so that they can really appreciate your fancy background graphic! For those of you who have not been following my Metro-In-Motion series, I'll briefly recap. My aim is to provide...

Metro In Motion Part #6 - Rolling List Location Indicator

This blog post describes the development of a rolling list location indicator. This indicator mirrors the behaviour seen in the native Windows Phone 7 calendar which rolls from one date to the next as the user scrolls. For those of you who have not been following my Metro-In-Motion series, I'll...

A Simple Windows Phone 7 MVVM Tombstoning Example

This blog post shows how to implement tombstoning within a Windows Phone 7 application that following the Model-View-ViewModel pattern. UPDATE: I have published a update to this blog post to handle the new dormant state in Windows Phone 7.1 (Mango).

Metro In Motion #5 - SandwichFlow

For the past few months I have been writing a Metro-In-Motion blog series which describes how to recreate some of the fluid effects found in native Windows Phone 7 applications within your own applications. So far I have covered fluid list animations, 'peel' animations, flying titles and...

White Paper: Flex, Silverlight or HTML5? Time to decide...

When meeting current and prospective clients the subject of web technology choice often arises. There has been a great deal of confusion and uncertainty out there, even before Microsoft's perceived change of stance with respect to Silverlight emerged. This white paper is intended to help technology decision makers come to...

Metro In Motion Part #4 - Tilt Effect

This blog post describes the implementation of a metro 'tilt' effect for Windows Phone 7 which causes element to respond to user interactions by tilting in 3D So far in the "Metro In Motion" series I have covered fluid list animations, 'peel' animations and flying title. In...

ViewModel INotifyPropertyChanged Code Generation

This blog post describes a novel method of generating boiler-plate MVVM code using codesnippet automation. You simply add attributes to your view model classes and the code is generated for you! Model-View-ViewModel (MVVM) has become the de facto pattern for Silverlight, WPF and WP7 applications, providing code that is easily...

A Fast Loading Windows Phone 7 NavigationList Control

This blog post describes a Windows Phone 7 NavigationList control, a list control designed for navigation pages. The NavigationList renders twice as fast as a ListBox and has a slightly simpler API. A few months ago I blogged about the relative performance of the Windows Phone 7 emulator versus...

MIX11 - A Tale of Two Keynotes - As Told By Twitter

The annual MIX conference, where Microsoft showcases the latest and greatest technologies to the development community is now coming to an end. For many, the highpoints of the event are the keynote presentations, where Microsoft unveils their latest tools and technology. The keynotes are broadcast live across the internet and...

Gartner Predicts a Promising Future for Windows Phone 7 Developers

Yesterday Gartner released its latest mobile smartphone sales predications, with the figures showing a dramatic turnaround in their predictions for the Microsoft Windows Phone 7 platform. The latest predictions are charted below (I find this much easier to visualise this data in a chart versus the tabular form which...

Metro In Motion Part #3 - Flying Titles!

In this blog post I look at how to implement the fly-out fly-in effect seen in native Windows Phone 7 applications. This effect is seen in the native mail application; when you click on a message, the title flies out of the list then flies back in as the title...

Metro In Motion Part #2 - 'Peel' Animations

This blog post is part #2 of my Metro In Motion series. In this post I demonstrate how to implement the animated 'peel' effect seen when native Windows Phone 7 applications exit. In my previous blog post I discussed...

Metro In Motion Part #1 - Fluid List Animation

This blog post presents an attached behaviour that gracefully slides the contents of a list into view when used in conjunction with a Pivot control, emulating the Windows Phone 7 email application. The Windows Phone 7 user interface is based on the Metro Design Language, which favours clear typography,...

A Silverlight Resizable TextBlock (and other resizable things)

In this blog post I present a simple attached behaviour that uses a Thumb control within a Popup to adorn any UI element so that the user can re-size it. A simple feature that has become quite popular on the web is to attache a small handle to text areas...

CodeProject Article on WP7 Jump List

I have just published a new CodeProject article on developing a Windows Phone 7 jump list control. Enjoy! Regards, Colin E.

MVVM Charting - Binding Multiple Series to a Visiblox Chart

This post describes a method of using attached properties to bind a ViewModel which contains multiple data series to a Visiblox chart without any code-behind. The Visiblox chart supports databinding in both WPF and Silverlight, where the X and Y...

Google Sky on Windows Phone 7

This blog post shows just how easy it is to use Google Sky as a tile source for Bing Maps, bringing the universe to Windows Phone 7! Personally I think mapping is one of the most exciting forms of application for...

Windows Phone 7 Performance Measurements - Emulator vs. Hardware

This blog post presents a few performance measurements that detail the relative performance of ItemsControl, ListBox and manual addition of elements to the UI. These performance measurements are also compared when ran on the emulator and the real hardware. My early experiences of moving from the WP7 emulator to the...

My DDDHack Entry

At the weekend my wife was having a 'girls night out', which gave me an excellent excuse (and roughly four hours) to spend working on a DDDHack entry. I selected the RSSReader project as a starting point with the aim of turning it into something which resembled a more...

A Circular ProgressBar Style using an Attached ViewModel

This blog post describes how to re-template the Silverlight ProgressBar control to render a circular progress indicator. This approach uses an attached view model to circumnavigate some of the limitations of the ProgressBar design. This blog post describes the creation of the following funky styles for the ProgressBar (and a...

Automatically Showing ToolTips on a Trimmed TextBlock (Silverlight + WPF)

Both WPF and Silverlight have a property TextTrimming="WordEllipsis", which trims the text that a TextBlock displays based on the available width. This blog post describes a simple method for automatically showing the full text as a tooltip whenever the text is trimmed. This is presented as an attached behaviour and...

Windows Phone 7 DeferredLoadContentControl

This blog post describes a simple content control that can be used to defer the rendering of its contents in order to provide a better user experience on Windows Phone 7. I think anyone who has made the transition from Emulator to Hardware with developing for Windows Phone 7 has...

A Navigator Control For Visiblox Time Series Charts

In this blog post I will describe the creation of a simple range selector UserControl, which can be used alongside a Visiblox chart to create an interactive navigator for time series data. Whether you are studying finance, politics, meteorology or sociology you are sure to encounter time series data. Time...

A Windows Phone 7 Jump List Control

This blog post presents a Windows Phone 7 Jump List control that I have developed.This post describes the API in detail and includes full sourcecode. Feel free to use and enjoy! The video below shows the control working on the emulator, the video further down this page shows it working...

#ukfuel - another Twitter / Bing Maps Mashup!

A few weeks ago I blogged about a Twitter / Bing Maps mashup that I had created for tracking snowfall in the UK via the #uksnow twitter hashtag. Last week I spotted a number of people in the uk who were using a new hashtag #ukfuel for tweeting fuel...

#ukfuel - a Twitter / Bing Maps Mashup for Tracking Fuel Prices

A few weeks ago I created a Silverlight version of the #uksnow Twitter mashup, which plots twitter users snow reports on a UK map. Yesterday I spotted a new geographically encoded hashtag, #ukfuel. Twitter users are using this hashtag to share local fuel prices across the UK. The...

Automatically Showing ToolTips on a Trimmed TextBlock (Silverlight)

Silverlight 4 added TextTrimming="WordEllipsis", which trims the text that a TextBlock displays based on the available width. This blog post describes a simple method for automatically showing the full text as a tooltip whenever the text is trimmed. This is presented as an attached behaviour. UPDATE: I have updated this...

#uksnow #silverlight The Movie! - Happy Christmas.

It's Christmas Eve and time for some fun! A few weeks back I published an article on Reactive Extensions where I created a Bing Maps / Twitter mashup that plotted the geolocation of #uksnow twitter tags. This twitter hashtag was popularised by Ben Marsh and is used by...

A Simplified Grid Markup for Silverlight and WPF

The WPF / Silverlight syntax is long and cumbersome. This blog post describe a simple attached property that allows you to specify row and column widths / heights as a simple comma separated list, e.g. RowDefinitions="Auto,,3*,,,,2*" The Grid is probably one of the most useful and versatile layouts that Silverlight...

Visiblox Charts vs. amCharts Quick Charts

Around one week ago I published an article which compared the performance of Visibox charts to a few of its competitors. The results indicated that Visiblox was the fastest chart, with DynamicDataDisplay coming in a very close second. UPDATE: I have published a more up-to-date and...

Visiblox, Visifire, DynamicDataDisplay - Charting Performance Comparison

A few weeks ago I published a blog post which compared the performance of the Visiblox charts and the Silverlight Toolkit charts. The results indicated that the Visblox charts are considerably faster than the Toolkit charts, however Microsoft's David Anson did point out that the Toolkit charts...

Silverlight 5 Adoption Predictions

The announced launch of Silverlight 5 has got the developer community all excited about improved media capabilities, MVVM support, printing and 3D, but how will Silverlight adoption evolve throughout 2011. In this blog post I look at historic data and use this to predict a 76% adoption of Silverlight 5...

UKSnow Silverlight Twitter / Bing Maps mashup - Sourcecode available

Just a quick update ... I have published an article on codeproject "Exploring Reactive Extensions (Rx) through Twitter and Bing Maps Mashups" which includes the sourcecode for my uksnow mashup. For the next few days, please let...

Exploring Reactive Extensions (Rx) through Twitter and Bing Maps Mashups

The following are a couple of examples to accompany my codeproject article on Reactive Extensions. You can read all about them, and download their source from the codeproject page. Twitter Instant A Google Instant style twitter search, type in some text to search Twitter:

UKSnow Silverlight - An Rx powered Twitter, Bing Maps mashup.

UPDATE: I have published an article on codeproject "Exploring Reactive Extensions (Rx) through Twitter and Bing Maps Mashups", which has the full sourcecode for this mashup. A week ago a colleague of mine posted an interesting article on parallelism in .NET 4.0 which included a few different libraries...

Adding a Smoothed Line Series (Bézier curve) to a Visiblox Chart

In this blog post I look at how to add a new series type to the Visiblox charts by creating my own series type which renders a smoothed line using a Bézier curve. This blog post describes how to create a new series type for the Visiblox charts, a...

Using a Grid as the Panel for an ItemsControl

In this blog post I look at how to use a Grid as the ItemsPanel for an ItemsControl, solving a few of the issues that crop up along the way. The Grid is probably the most useful of Silverlight and WPF's panels (panels are elements which provide a mechanism for...

Visiblox Charts vs. Silverlight Toolkit Charts - a test of Performance

This blog post compares the performance of the Visiblox and Silverlight Toolkit charts using a simple image processing tool to test and illustrate their differences in performance. The results show that the Visiblox charts are approximately 50 - 100 times faster that the Silverlight Toolkit charts. UPDATE:...

Does HTML5 mean the end is in sight for Silverlight?

This blog post looks at the fallout after last week's PDC conference where Microsoft were quoted as saying "our strategy on Silverlight has shifted", and the resulting fallout in the developer community. In this post I will describe why I think Silverlight has a future ahead of it and exactly...

Developing a Lookless Silverlight Gauge Control (part 2)

In a previous blog post I described the process of creating a lookless gauge control. I introduced the concept of an attached view model which separates view specific concepts from the control. In this post I demonstrate how this allows for great flexibility when re-templating the control. In my...

Silverlight as an alternative to PowerPoint

Recently I gave a presentation on cross platform application development with Silverlight, WPF and WP7. I wanted to move away from the standard PowerPoint bullet-point driven presentation style, so decided to create a presentation as a Silverlight application running in full-screen mode. This blog post describes the steps I took...

White Paper: Silverlight, WPF and Windows Phone 7 cross platform development

Last week I gave a presentation at a joint Scott Logic / Microsoft event about how WPF and Silverlight are unifying the development platform for desktop, web and mobile. To accompany the talk I wrote a white paper which delves into this subject in a little more detail. You...

XAML Finance

Templates, or Why I love WPF (and Silverlight Too!)

This post compares the implementation of a simple ListBox layout with Windows Forms and Windows Presentation Foundation. The use of Templates within WPF are a clear winner over the WinForms 'owner draw' route. Application user interfaces are becoming much more graphical, with users expecting a more engaging and 'lively' experience....

Developing a (very) Lookless Silverlight Radial Gauge Control

This blog post describes the development of a lookless radial gauge control. In this post I will explore the use of an attached view model in order to move view specific properties and logic out of the control code in order to give a truly lookless control. Today I had...

Silverlight MultiBinding updated, adding support for ElementName and TwoWay binding

This blog post describes an update to the Silverlight 4 MultiBinding technique I blogged about a couple of months ago to add support for ElementName binding and TwoWay binding. A few months ago I posted an update to my MultiBinding solution for Silverlight 4. This technique allows you to perform...

Exposing and Binding to a Silverlight ScrollViewer's Scrollbars

The Silverlight ScrollViewer exposes readonly properties which indicate the current vertical and horizontal scroll offset, and methods for setting the current offset. In this blog post I demonstrate a simple attached behaviour that exposes these offsets as read / write dependency properties allowing them to be bound to. The Silverlight...

A Universal Value Converter for WPF

This post provides a simple IValueConverter implementation that makes use of the framework type converters in order to convert between a large range of source / target types. This converter can be used both within bindings and in code-behind to give more concise property setters. Introduction One of the great...

Modal dialogs in cross-platform WPF/Silverlight applications

This blog post looks at the problem of showing modal dialog windows in applications that target both the Silverlight and WPF platforms. A solution is provided which allows modal dialogs to be written that work well for both technologies. Silverlight is, roughly speaking, a subset of Windows Presentation Foundation (WPF)....

Throttling Silverlight Mouse Events to Keep the UI Responsive

If your Silverlight application performs intensive updates to the UI during mouse events, the UI can freeze because it is invalidated before it has a chance to render. This post describes a technique for 'throttling' mouse events to ensure that each time an event occurs, the UI has the opportunity...

Silverlight MultiBinding solution for Silverlight 4

In this post I describe an update to the Silverlight MultiBinding solution I presented last year. This update includes support for Silverlight 4, attached properties and multiple bindings on a single object. UPDATE: I have updated this code to include ElementName and TwoWay binding. Grab the latest copy here....

Ineffective Data Visualisation ... and how to fix it

This blog post looks at a recently published set of charts in a UK newspaper and how they fail to help in the comprehension of the data which they visualise. I will also look at much more effective ways of displaying this same data. At Scott Logic we tend to...

Binding a Silverlight 3 DataGrid to dynamic data via IDictionary (Updated)

In this post I demonstrate a method for binding a Silverlight 3 DataGrid to dynamic data, i.e. data which does not have properties that are known at design time. This technique results in a bound grid which is sortable and editable. This blog post is a bug fix (due to...

Linq to Visual Tree

This blog post demonstrates a Linq API which can be used to query the WPF / Silverlight Visual Tree. You can find a few other Linq to Visual Tree techniques on other blogs, but what makes this one unique is that it retains, and allows queries that make use of...

Forcing Event Consumer Cleanup without Weak Events

This blog post describes a simple technique for ensuring that consumers of events unsubscribe their event handlers without the need for weak events. I think the concept of managed memory, where the cleanup of unused objects from the heap is performed by a garbage collector, is a fantastic idea. It...

Presentation on Agile Development

Last week I gave a presentation on Agile Development for an event hosted by Codeworks and Sunderland Software City. This blog post is a brief review of my presentation and the event itself. The event was titled, "An...

My Mix10k entry - Old Skool demo - plus a few tips

This blog post is about my entry to the Mix10k code competition, and old-skool demo, plus a few tips about how to keep you code size to below 10k. The mix10k challenge, where you are given 10k to create a Silverlight / HTML5 application, has been on my mind...

Rippling Reflection Effect with Silverlight 3's WriteableBitmap

This blog post demonstrates how Silvelight 3's WriteableBitmap can be used to create a UserControl that renders the content of any other Framework Element as a reflection with an animated ripple effect.

Simple Logging Facade released on codeplex today

Today, Philipp Sumi and I and are proud to announce the release of SLF - the Simple Logging Facade: SLF is a framework with a simple but ambitious mission: To provide every developer with the means to easily plug...

Silverlight 4 beta released leaving Flex behind

This post looks at the speed of development of the two leading RIA frameworks, Silverlight and Flex, giving unequivocal proof that Silverlight is better than Flex ... ! This week at Microsoft's Professional Developers Conference (PDC), there have been two big news stories. The first is the give-away of...

Helpful extension methods for Show / Hide animations in Silverlight

Today's blog post is a couple of very simple utility methods that I have found myself using again and again ... The animations that Silverlight developers have at their disposal are both varied and powerful. It is easy to get carried away and cover your application with gratuitous animations, which...

Declarative Dependency Property Definition with T4 + DTE

UPDATE I have published a more up-to-date version of this code on codeproject, which allows you to automate the generation of much more than just dependency properties. This blog post describes a technique for specifying WPF / Silverlight Dependency Properties declaritively via attributes as illustrated by the following example:...

The mini-ViewModel pattern

The construction of a ViewModel is often seen as the standard technique for solving binding problems within WPF and Silverlight. However, the addition of a ViewModel adds complexity to your code. This post describes an alternative method where a mini-ViewModel is applied directly to the problem areas in the view,...

News on Silverlight adoption from the Silverlight 3 UK Launch

Yesterday myself and Gary Scott (our MD) went down to London for the Silverlight 3 UK launch event. This is the first time I have been to Microsoft's London office so I wasn't quite sure what to expect. The glass-clad arched office exterior, and shiny minimalist interior were certainly stylish,...

Silverlight v3 ClearType Font Rendering - A comparison

Text rendering has been a problem for both Silverlight and WPF for a while. This blog post looks at ClearType in Silverlight v3 and compares it to WPF and WinForms text rendering. Text clarity is something that concerns me quite a bit. In financial applications, such as our market...

Silverlight 3 UK launch ... and the future of WPF?

A brief article on the launch of Silverlight 3 and why the interest in Silverlight is eclipsing that of WPF. The excitement behind Silverlight has been gaining in momentum throughout this year, with one of the highpoints being the MIX09 conference in March this year where the announcement of...

Silverlight MultiBindings, How to attached multiple bindings to a single property.

This blog posts describes a technique for associating multiple bindings with a single dependency property within Silverlight applications. WPF already has this functionality in the form of MultiBindings, the code in this post emulates this function. UPDATE: Silverlight 4, attached properties and multiple property bindings are all supported in my...

Exposing Bindings as Properties of a Control

I must admit that the title of this post is not entirely clear, however I couldn't find a way to sum up the content in one short sentence, so we'll dive straight into an example. Let's say for example...

Dependency Property Performance and Lissajous Figures

A few night ago I was working on a Siverlight control which renders some quite complex Paths, the geometry of which is determined from a number of dependency...

Silverlight ClipToBounds - Can I Clip It?, Yes You Can!

With Silverlight, Panels do not clip their contents by default. See the following example: Where we have a Grid containing another Grid which itself contains an ellipse, and a Canvas which contains an ellipse: <Grid...

Community Credit Prize Winner

Last month was a busy one for me - I wrote quite a few blog posts, with the Silverlight ones proving very popular, and added new article posted to codeproject. I just received an email today notifying me that I was a prize winner in the Community Credit...

New codeproject article on WPF, Silverlight + T4 Templates

I have just finished a new article on CodeProject - Generate WPF and Silverlight Dependency Properties using T4 Templates

Binding a Silverlight DataGrid to dynamic data Part 2 - editable data and INotifyPropertyChanged

UPDATE: This blog post was written with a SL2 DataGrid, for SL3, please see my updated blog post. In my previous blog post I described a method for solving the commonly faced problem of binding a Silverlight DataGrid to dynamic data, the form of which is not know...

Binding a Silverlight DataGrid to dynamic data via IDictionary

This post demonstrates a technique for binding a Silverlight DataGrid to dynamic data, the structure of which is not know at compile-time ... UPDATE #1: I have extended this technique to add include change notification so that the DataGrid can be made editable. Read all about it in

Silverlight Dependency Property Code Generation

This blog details a technique for generating Silverlight dependency properties from an XML file via a T4 template. If you just want to grab the code, scroll to the bottom of this article and download the sourcecode or cut and paste the templates. If you want to find out how...

Adding a Location Crosshair to Silverlight charts (again!)

Silverlight is moving fast. Really fast. The recent MIX09 conference saw the release of Silverlight 3 (Beta) and also a new release of the Silverlight Toolkit. All this change is making it hard for us bloggers to keep up! Just over a month ago I posted an article...

Silverlight 3 is here! (but is it a flash killer yet?)

Less than 24 hours ago Microsoft's MIX09 conference kicked of in Las Vegas with Silverlight 3 taking centre stage. For those of you who have followed the conference build-up, this comes as no surprise, with twice as many Silverlight sessions (31) advertised than any other technology (WPF has a...

Using CSS Selectors for Styling in WPF

When I first encountered WPF I was really impressed by its styling and templating features which are more powerful than anything else I had previously seen for desktop software development. The property-value pairing within styles instantly reminded me of CSS, however the WPF styles lack the most powerful feature of...

Implementing RelativeSource binding in Silverlight

In my previous post I demonstrated how an the WPF ElementName style binding can be emulated with Silverlight via an attached behaviour. As a brief recap, the technique involved creating an attached property, which when bound, adds a handler for the elements Loaded event. When the element is loaded,...

ElementName binding in Silverlight via Attached Behaviours

As a relative newcomer to Silverlight I was happily greeted by the warm feeling of familiarity when I started developing. It is surprisingly easy to make the transition from WPF to Silverlight developer, with most of the core concepts being just the same. However, there are some parts of the...

Styling hard-to-reach elements in control templates with attached behaviours

OK, the title of this blog post is not very snappy, but it is not an easy problem to describe in a few short words. Here's the rub, the WPF DataGrid has a select-all button located in the top-left corner, just like Excel and many other grid controls / applications....

Adding a Location Crosshair to Silverlight Charts

UPDATE - The March09 update of the Silverlight toolkit is incompatible with the code detailed below. For an up-to-date version see the following blog post. This blog post describes how to add a location crosshair to your Silverlight charts as shown below:...

BindingGroups for Total View Validation

Over the weekend Sacha published a new article on codeproject, Total View Validation (does Sacha ever sleep?). This article addresses some of the perceived problems with the WPF binding framework, firstly, that the standard solution of using the ValidatesOnDataErrors property forces you to place validation logic into your...

WPF DataGrid - Committing changes cell-by-cell

In my recent codeproject article on the DataGrid I described a number of techniques for handling the updates to DataTables which are bound to the grid. These examples all worked on the assumption that you want to keep your database synchronised with the DataGrid, with changes being committed on...

LayoutTransform vs. RenderTransform - What's the Difference?

I have answered a few forum posts about the WPF transforms recently, mostly regarding confusion between RenderTransform and LayoutTransform. This brief blog post illustrates the difference between the two. The WPF layout system comprises, of two steps, followed by the rendering of the user interface (UI): ...

Awards and other news

A couple of days ago I was happy to hear that I am a prizewinner in the Community Credit awards for November 2008. Community Credit encourages developers to contribute to the global developer community by writing articles, giving talks, participating on forums etc... Top contributors are rewarded with 'stupid...

WPF DataGrid - detecting the column, cell and row that has been clicked

The WPF DataGrid is a very flexible tool, however in its current state certain simple tasks can prove to be rather tricky. A fairly common task when working with DataGrid is detecting which row, or cell a user has clicked on, or whether they clicked a column header. You might...

Using BindingGroups for greater control over input validation

In a recent post on his blog Josh Smith described a technique for providing more meaningful error messages when the type conversion process fails within the binding framework. Consider the following problem; you bind an integer property of your object (Age for example) to a TextBox within your user interface....

Design time drag-and-drop binding is on its way

In my opinion the lack of decent design-time tool support is currently hampering the adoption of WPF, that and the relatively small number of controls available to the developer out-of-the-box. The later is being addressed to a certain extent by the developer community, notably by Marlon Grech's Avalon Controls...

Multiselect DataGrid with CheckBoxes

I am currently very interested in the new WPF DataGrid which was released on codeplex recently. Someone posted an interesting question in the codeplex forums asking about whether it would be possible to configure the DataGrid so that a user can make multiple row selections via checkboxes which...

About

Welcome to my blog, Colin Eberhardt's Adventures in WPF. This page gives a little background on myself and the blog. My name is Colin Eberhardt and I have been involved in software, in a number of shapes and forms, for more than a decade now. I have dabbled in a...