Silverlight CustomControls and Blend 2

  • nederlands
26 12 2007

Most of you would have probably stopped developing in silverlight 1.1 2.0 after seeing how custom controls worked in blend 2 (they do nothing). But for those of you who persevered some tips to help you on your way.

Xaml

The current control model is absolutely unfinished. One of the firts thins you have to do is change the way a CustomControl is loaded, and map the controls in your xaml to your code.

System.IO.Stream s =
  this.GetType().Assembly.GetManifestResourceStream(“UserControl1.xaml”);
FrameworkElement _actualControl = this.InitializeFromXaml(
  new System.IO.StreamReader(s).ReadToEnd()
);
_actualControl.FindName(“Button”);Namespaces

Blend 2 doesn’t understand it when you put namespaces in your customcontrol xaml, it does work in the xmlns decleration but not in the actual xaml control.

Wrong:
<CustomControls: Buttons.RoundButton …..=“” /> and
<CustomControls.Buttons: RoundButton …..=“” />

Right:
<CustomControls:RoundButton …..=“” />

Visual Containers

Because custom controls do not show in blend 2, making layouts is a very dificult story. One solution is to create rectangles for every custom control and name them the same except for a temp_ prefix.

Then in the onloaded event of your page, cycle trough your object tree and place the custom controls over the rectangles and remove them.

More to come.

Robertjan Tuit



Wiinority Report

  • nederlands
22 12 2007

Sometimes i am so inspired by things i read, see or hear, that i am not quite sure how to act on them. But i’m glad that have my Blog these days to at least share it with you all.

That we can connect our wiimote to our pc is not new, but what this guy is doing with it is realy refreshing and inspiring.

The principle behind a wiimote is a camera inside the wiimote that registers the 2 light sources inside you sensor bar on top of your tv. Bu what if you swap them: You place the wiimote on top or at the bottom of you tv and you move the light sources around, the applications are very endless. For example when you use a pair of glasses with 2 lights on eather side.

Especially his 3D viewport implementation is inspiring and the other makes the input devices from Minority Report science fact instead of function!

Everything is available as c# source code, i can’t wait to get them to work on my own laptop!

Link : http://www.cs.cmu.edu/~johnny/projects/wii/

Video’s :



Moq (Mock-You)

  • nederlands
21 12 2007

One of the most important tools for a modern developer is a good mocking framework.

At the moment there are 2 relatively equal frameworks : RhinoMock en TypeMock. Both have good compile time debugging, reflection, refactoring and have proven themselves in numerous projects.

Moq - Mocking YouBut as could be expected after the release of the new c# 3.0 language features, there is a “newcomer in mocking town” and it’s named Moq, pronounced as “Mock-You”.

Using the new “Linq” language features this is a project to watch. Especially because it is available as full open-source at Google code.

QuickStart : http://code.google.com/p/moq/wiki/QuickStart
Home : http://code.google.com/p/moq/
Download : http://code.google.com/p/moq/downloads/list



Silverlight 1.1 en ASP.NET WebService

18 12 2007

Al een paar weken ben ik in de avond uurtjes een applicatie aan het maken die  gebruik maakt van silverlight 1.1 alpha , asp.net, webservices en Linq2Sql. Daarbij ben ik een paar heikele puntjes tegengekomen die ik met jullie wil delen. Ze zullen zeer waarschijnlijk allemaal opgelost zijn in de komende 2.0 beta. Maar als je, zoals ik, voor die tijd ermee aan de slag wilt dan kan je de volgende zaken tegenkomen:

A circular reference was detected while serializing an object of typeDbMl properties

Als je een linq2sql object model maakt dan zitten daar naar alle waarschijnlijkheid circular references in. Hier kan de serialization van de webservice niet mee omgaan.

Dit kan je, als je WCF gebruikt, oplossen door Serialization  Mode van de DataContext op UniDirectional te zetten.

Als je zoals ik gebruik maakt van een “ouderwetse” webservice, omdat ik WCF, Silverlight 1.1 alpha en de silverlight proxy generator van Visual Studio 2008 maar niet goed aan de praat krijg. Dan kun je dat op 1 manieren oplossen.

Een simpele oplossing is om de association weg te halen, maar dit is in veel gevallen niet wenselijk.

Je kan ook een van de 2 referenties op “internal” zetten in plaats van “public”. Deze Access property is er voor de Child property en Parent Property van de Association. Vaak is de child property niet nodig in je model. Let alleen wel op, deze is dus nu ook niet meer beschikbaar in Linq Queries.

JSON_cannotconvertobjecttotype

In eerste instantie gebeurde er gewoon helemaal niets, ik probeerde een webservice aan te roepen en toen hield hij er gewoon mee op. Na wat verdere inspectie kwam ik bij de fout JSON_cannotconvertobjecttotype.

Na wat zoekwerk op google,  bleek deze fout te ontstaat als je een Guid binnen een class hebt. De fout zit ergens in de alpha code van Silverlight. En dan heb je dus een probleem want de Guid is gegenereerde code uit je database.

Je kan je datamodel aanpassen en gaan werken met incremental id’s. Maar wil je gebruik maken van de aspnet_user tabel (standaard in asp.net 2.0) dan zul je toch echt iets moeten gaan doen met de Guid.

Een andere oplossing is om zelf objects (dto’s) te maken met Guid als string en deze objecten te vullen met de gegevens van de Linq objects. Dit voelde alleen als een heleboel dubbel en repetitief handmatig werk en als echte ontwikkelaar heb ik daar een hekel aan (grijns).

De oplossing die ik uiteindelijk gekozen heb is om via een SearchAndReplace command-line utility in de gegenereerde proxy class alle System.Guid te vervangen door System.String na elke successvolle build.

Hierdoor word de Guid in silverlight dus een string, waar ik mee kan leven. De SearchAndReplace utility is eigen fabricaat dus als iemand interesse heeft kan ik de source op mijn blog plaatsen.

Update 18 Dec 2007 16:08: Dezelfde fout treed op met System.Nullable<> types.

Robertjan Tuit



Expression Blend December Preview

11 12 2007

Het was gister al zover maar door de december drukte was ik er niet aan toe gekomen om het nieuwtje te melden, het lijkt er bijna op dat het blend team nu elke maand een nieuwe release gaat uitbrengen.

En zoveel heb ik gister ook niet gemist want op het eerste gezicht zijn er nauwelijks aanpassingen vergeleken met de vorige preview, behalve dat het kan samenwerken met Visual Studio 2008 en .Net 3.5. Laten we hopen dat er in ieder geval in stabiliteit verbeteringen zijn.

Link : Blend 2 December Preview Free Trial

Robertjan Tuit



ASP.NET 3.5 Extensions

10 12 2007

Het lange wachten is over, we kunnen eindelijk aan de slag met het MVC Framework. Gebundeld met de onderdelen die tot nu toe in de asp.net futures release zaten heeft het asp.net team vandaag een preview van MVC framework uitgebracht in de ASP.NET 3.5 Extensions. Je kunt ze “gewoon” naast de huidige assemblies blijven draaien, dus ASP.NET MVC Object Viewerinstalleren en spelen maar!

De extensions download bevat:

Je krijgt er dus gratis en voor niets ook nog is het Entity Framework bij, ik kan niet wachten tot ik er vanavond lekker mee kan gaan spelen!

Direct downloaden :

En nog een klein overzichtje van wat informatieve blog posts, walktroughs en screencasts:

Veel plezier!

Robertjan Tuit

Bronnen: ScottGu, Nikhilk & Phil HAACKED.



Volta, Web Development 2.0

7 12 2007

Inderdaad: Web Development 2.0 en niet Web 2.0.

Ik ben echt ontzettend enthousiast over wat er vandaag uit de Microsoft Labs is geslopen, dus neem alsjeblieft de tijd om deze lange post door te lezen. Ik ga proberen uit te leggen wat Volta nu precies is, om daarmee ook volta_thumbnail aan te geven waarom ik het zo geweldig vind.

Voor de mensen die mijn blog al wat langer lezen, Volta is Script# in het kwadraat. Volta werkt alleen niet met source code maar met MSIL (Intermediate language). Deze MSIL kan hij dan weer converteren (hercompileren) naar javascript dat draait in elke willekeurige browser en elk willekeurig platform (in deze ctp alleen nog IE en FF). Het genereren van cross browser javascript kan je vele uren ontwikkel en debug tijd schelen.

Je kan dus “gewoon” C# (en o.a ook VB, Python en Ruby) code schijven tegen je html pagina aan. Dus als je in html een element met id=”Text1″ hebt, dan kun je in C#  Text1.InnerHtml = “Nieuwe tekst”; intikken, waarbij het bij het hercompileren door Volta, vertaald zal worden naar javascript en uitgevoerd in de browser.

Tot aan hier, nog niets nieuws. Want dit konden we al met Script#. Hoewel deze implementatie je wel behoorlijk veel meer vrijheid geeft. De echte kracht van Volta zit hem wat mij betreft in het feit dat je binnen een project zowel server als client code kan schrijven.

image001

Deze laag splitsende technologie (zie ook plaatje hierboven) werkt door middel van attributen (o.a. [RunAtOrigin]) die bepaalde classes op de server en andere classes op de client laten draaien. Deze classes kunnen dan, zonder dat je daar zelf code voor hoeft te schrijven, elkaar aanroepen alsof ze zich op dezelfde laag bevinden. Volta genereert alle code die nodig is voor de communicatie tussen de browser en de server.

Daarbovenop levert volta een wijde reach van tools en functionaliteit (o.a. controls en javascript interop). Daarme tilt Volta het ontwikkelen van webapplicaties naar een nieuw niveau.

Wel moet op dit moment worden aangetekend dat het wel te maken hebben met een CTP preview release waarvan de functionaliteit nog lang niet vast staat en de code nog lang niet productie klaar is, maar een kijkje in de keuken van de toekomst is natuurlijk nooit verkeerd.

Dus als je net zoals ik gegrepen bent door het Volta Virus, kun je de volgende links volgen om meer informatie te krijgen en er zelf mee aan de slag te gaan en ik hoor net dat Christiaan van Bergen na het weekend met een paar mooie code voorbeelden komt om je verder te helpen.

Robertjan Tuit

p.s. Waar zouden ze toch dat logo vandaan hebben ?



Silverlight challenge

7 12 2007

Ineta, de wereldwijde .NET gebruikersgroep voor .NET gebruikersgroepen (ja dat lees je echt goed), heeft de eerste “European Silverlight Challenge” uitgeschreven. En daar zijn een aantal hele mooie prijzen aan verbonden met een totale waarde van 150.000 euro!.

imageHier zitten onder meer 3 tickets tussen naar de Mix 08 in Las Vegas, inclusief reis en verblijf!

De inschrijving is begonnen in november en zal eind januari eindigen. Alles wat  je met  silverlight kan maken geld als geldige inzending: een user control maar ook volledige applicaties zoals een chatbox of een hele vette silverlight game.

Als dit geen goed argument is om met silverlight aan de slag te gaan weet ik het ook niet meer. En laten we eelijk zijn; het is ook gewoon erg leuk om te doen.

Zelf vind ik Las vegas toch ook wel erg lekker klinken. Dus van mij hoef je niet mee te doen, meer kans voor mij om die trip te winnen :).

Iemand nog leuke suggesties?

Meer informatie: http://netherlands.silverlightchallenge.eu

Robertjan Tuit



Outlook Inbox Search : Xobni

5 12 2007

Een van mijn dagelijkse irritaties is de manier waarop outlook met mijn e-mail archief omgaat, even snel wat opzoeken is een crime. Een goed overzicht kan je al helemaal vergeten, zelfs met “search folders” kan je er nog eigenlijk niet veel mee.

Dan heb je natuurlijk Live Search, waar de door Microft opgekochte Lookout inzit, maar die wil ik helemaal niet!. Zeker omdat je er automatisch ook de harddisk indexer en andere troep bijkrijgt, en spreek me al helemaal niet over het zoek panel (ctrl-f) wat mijn standaard explorer zoek paneel vervangt.Xobni, Inbox 2.0

Daarom ben ik al maanden op zoek naar een goede zoek tool voor Outlook 2007. En vorige week kwam ik er eindelijk een tegen die we me aansprak, waarbij de user interface van deze applicatie alleen, al het vermelden waard is : Xobni, Inbox 2.0.

Xobni (Inbox omgekeerd) is veel meer dan een zoek tool maar maar het lijkt erop dat het, als het al zijn beloftes waarmaakt, in ieder geval mijn dagelijks e-mail leven een stuk gaat vermakkelijken.

Heel kort door de bocht kan je ermee zoeken, snel oude e-mails vinden en heel snel springen tussen verschillende contacten die je niet eens hoeft toe tevoegen als contact. Maar dat geeft bij lange na niet weer welke potentie het heeft, daarvoor moet je het zelf in actie zien : “Feature list & Video“.

Kortom, een “must have” voor iedereen die veel e-mail verstuurd en ontvangt en dan laat ik de geweldige user interface nog even achterwege.

Er zit natuurlijk wel een nadeel aan : Hij is nog niet gereleased en alleen beschikbaar in een closed beta. Please let me in!

Link : www.xobni.com 
Features & video : http://www.xobni.com/learnmore/
Blog : www.xobni.com/blog

Robertjan Tuit



Microsoft (Silverlight) Download Center

5 12 2007

Het ziet ernaar uit dat microsoft gestart is met het implementeren van silverlight 1.0 in zijn eigen website. Dit is dus een echt mooi voorbeeld van het gebruiken van silverlight gewoon als vervanging van HTML. Zeker nu silverlight alleen nog aangestuurd word via Javascript zijn dit de enige zinnige toepassingen.

Microsoft Download Center SilverlightKlik ook vooral even door in het menu rechts, om een aantal aardige silverlight toepassingen te bekijken :

Link : Microsoft Preview Download Center