2 people following this project (follow)

Project Description
281slides is a project to demonstrate how one could go about implementing something similar to http://280slides.com in Silverlight3.

281slides.jpg

Why does this project exist?

Proof of concept

I guess you've all seen http://280slides.com. I think it's damn impressive and I wondered how much effort it would take to implement something similar in Silverlight3.

Inspirational

If one person thinks he/she learned something from 281slides it was worth the effort.

Showcase

I'm using this project when talking about WPF / Silverlight to demonstrate what I think are good ideas when it comes to Silverlight / WPF Development. My plans for this site is to extend it with what I think are the highlights with the way 281slides is implemented. For those that care these would be my primary guidelines:
  1. Separate behavior and look (one of corner stones of WPF / Silverlight and one of the reasons I avoid UserControls like the plague as they break this rule)
  2. Describe your application state as a bindable model
  3. Let the user interface bind to this model
  4. Don't rely on Controls to implement business logic, do it in the model.
  5. Use Controls in those case where your need to transform the model into a view model (281slides intends to do this, but cheats in some places at the time of writing)

MVVM

So is it MVVM? To be honest I don't know since when I read about MVVM it made lots of sense to me for WPF / Silverlight but I had no clear picture on how to implement it.

But if you look at it like this:
  • 281slides has a model which also contains the business logic (very simple most of the time).
  • It binds control on top of this Model to create model more suitable for viewing, that we could call a ViewModel.
  • XAML binds to this ViewModel in order to generate the View.

So in some sense it's MVVM.

Not that I really think it matters.

Outstanding Issues

  • Bulleted Text not implemented (and related commands not implemented as well)
  • Themes not implemented
  • Layouts not implemented
  • Movies not implemented
  • Color selection not implemented
  • Rotation implemented but disabled as it didn't work properly
  • Opacity slider generates lot of undo commands
  • Resizing and repositioning generates two undo events instead of one.
  • Serialization code isn't 100% there
  • When window width goes small the images overlap

Last edited Apr 24 2010 at 12:35 PM by marten_range, version 15