Mobility days sessions & demos

Hi, first things first, thanks so much to the organizers & sponsors of the Mobilitydays event (www.mobilitydays.com) for celebrating such great and interesting event.

Second, as promised, here are the slides & demos with full code.

First, the slides:

Developing WP7 Applications with Silverlight – http://www.slideshare.net/joslat/md2010-jlwp7sldev

Developing WP7 Games with Silverlight – http://www.slideshare.net/joslat/md2010-jlwp7slgamedev

And do not forget to check the demos, all together in a single compressed file for your ease.

http://www.brainsiders.com/mobilitydays/MobilityDays_JLDemos.rar

Thanks & Have fun!!

Speaking! MobilityDays!! TechEd Europe 2010!!!

Well this is one of the moments that one of you that loves to code, design, speak & share enjoys the most, when other fellows ask you to help them share knowledge 🙂

First of all, thanks to the magnificient team of professionals that is managing both events and I’m extremely glad to have been chosen as speaker for “first time” at these great events. My thanks!

First things first, MobilityDays is happening the Day after tomorrow.. on 23th of September, in Zagreb, Croatia, to the East of Europe. But do not worry, you can assist without having to book a flight! Sesssions will be broadcasted through live meeting :).

There, I’ll be speaking on two sessions : “Developing Windows Phone applications with Silverlight” and “Building games forWindows Phone with Silverlight”. Sessions will be in english.

So, what are you waiting for, go and register : www.mobilitydays.com (update: it’s free for MVP’s and INETA User Group Leaders) and well, there are a lot of very good speakers there – apart from me, the “newbie” I mean 😉 – Joking!!  I expect to make a pretty entertaining and insightful sessions and I hope you enjoy them :).

Also, I’ve been selected to speak at TechEd Europe 2010 conference, so can’t be happier.

I know this deserves a “post apart” and it will have it definitely – let me finish this week and I’ll be back with more details regarding the session that, for starters, will focus on the 3D (2.5D & 3D) capabilities of Silverlight, on a very intense practical session, going from the basis to creating awesome – and I mean that – 3D interactive interfaces in Silverlight. More about this later…

By now, if you haven’t registered, don’t think more, go to http://europe.msteched.com/registration and register before tickets run out!!

Have fun!

Silverlight DataGrid – Issues solved!!

Today is a happy day….  

I am actually battling with a Silverlight business application with some interesting design & behavior – in fact it is a migration from a VB6.0 App.. but the design of the screens is not bad and it’s pretty useful to the task they are designed for. 

One of the most costly things I’ve suffered is that I had to show off some information grouped and totalized (nothing strange here, you just have to search a bit and you know the how-to) and also each group of information could have different format on the same column…. and oh my, this has been a real killer… 

I tried to change it programmatically but the Binding is bound to the column… so I tried to change the binding, first through the StringFormat but… hey! it is not bindable! Bummer… then I tried to use a custom Converter and bind the ConverterParameter but it also happened not to be bindable – or I did not find how to implement it. I tried also to implement a custom Converter deriving from FrameworkElement and IConverter so I could create a bindable property for using it instead of the ConverterParameter…. but that didn’t work out properly… 

Until I found a gem, the “Silverlight MultiBinding” solution that a smart guy, Colin Eberhardt conceived & developed to implement a similar binding model to that of WPF, with more funcitons and to be clear, more mature. Silverlight team, we need that on SL ASAP if we are to build serious SL business apps… if not some developers can get near to crazy to solve some “customer needs”… like I have ;). 

Regarding the MultiBinding, you can read from Colin on his blog here: http://www.scottlogic.co.uk/blog/colin/2010/08/silverlight-multibinding-updated-adding-support-for-elementname-and-twoway-binding/ 

Gladly I’m not alone as “Full Databinding Support” is the top requested feature on the Silverlight Feature Suggestions forum here:  http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions, with over three thousand points, it’s the Nº1!!. 

Wich includes requests for fabulous features like: 

+ ValueConverter ConvertParameter binding.
+ StringFormat binding.
+ Strongly typed DataBinding support (intellisense).
+ Conditional Binding.
+ Binding to dynamic objects .
+ More extensibility.
+ Etc.. 

Regarding to my solution I implemented it on the DataGridTemplateColumn for each column I needed to format conditionally, considering also that some columns will need to be editable, so I had to use the usual binding for the editable template even that the TwoWay binding works on the Multibinding implementation but I found no way to keep the format from being reset (by now the TwoWay multibinding requires that all the properties are TwoWay). You can see the XAML code next: 

<data:DataGridTemplateColumn Header=”Budget” > 

<data:DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<TextBlock TextAlignment=”Right” > 

<multibinding:BindingUtil.MultiBindings>

<multibinding:MultiBindings>

<multibinding:MultiBinding TargetProperty=”Text” Converter=”{StaticResource MultiBindingGenericConverter}” >

<multibinding:MultiBinding.Bindings>

<multibinding:BindingCollection>

<Binding Path=”Budget” />

<Binding Path=”Budget_Format” />

</multibinding:BindingCollection>

</multibinding:MultiBinding.Bindings>

</multibinding:MultiBinding>

</multibinding:MultiBindings>

</multibinding:BindingUtil.MultiBindings>

</TextBlock>

</DataTemplate>

</data:DataGridTemplateColumn.CellTemplate>

<data:DataGridTemplateColumn.CellEditingTemplate>

<DataTemplate>

<TextBox TextAlignment=”Right” Text=”{Binding Budget, Converter={StaticResource RoundedConverter}, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}” >

</TextBox>

</DataTemplate>

</data:DataGridTemplateColumn.CellEditingTemplate></data:DataGridTemplateColumn>

So if you have a similar scenario, I’d recommend Colin’s solution.

Other issue I had with the DataGrid was with the Virtualization – it’s virtually impossible to deactivate. Also the search for a solution on this was” a bit chaotic… “

I was lucky to find out this gem here http://forums.silverlight.net/forums/t/101075.aspx on which Xusan is telling us not to deactivate it but to change its structure and take out the component that provides the virtualization, changing its ControlTemplate.

That saved my day as the DataGrid really is not “Recycling” but “Reusing”, which I think should be changed or made  optional. As this can be Ok for performance reasons but on others you can end up coding a huge clean-up function that will kill the performance of the virtualization…  if there is a quick way of “cleaning” a row or cell, it would be great this was as fast as possible…

Well, will keep on finishing my DataGrid based project management Silverlight Bizz app 😉 

Have fun!