The API and documentation changes and the fact that Beta2 will not run applications that target Beta1 has obliged me to update links and all the samples previously posted on this blog such as the Pie Chart and Stock List Demo. From this point on all posts will target Silverlight 2 Beta 2.
I started with a brand new Beta 2 solution when updating each sample to keep things clean. The changes required to make the the new Pie Chart Solution work included updating the parameter list for the calls to the static Register method for the Dependency properties in the PieChart class now they require an instance of the PropertyMetadata class; a similar change to the Storyboard.SetTargetProperty method calls in PieLayoutManager that now require an instance of the PropertyPath class. The need to add the MouseEnter animation Storyboard to the resources of the PieChart Canvas is removed thanks to the new support for the ability to create Storyboards in code that can animate parts of the render tree without having to be added to it.
The Stock List Demo Part 3 sample required the same changes for Storyboard.SetTargetProperty and also benefited from the fact that Storyboards created in code no longer have to be added to the Resources of a FrameworkElement for the stock highlight animations to work. Other changes I ran into included that EventHandler<T> now requires T to inherit from EventArgs, the DataGrid’s AutoGenerateColumns is now true by default, displays itself using a smaller font by default and supports auto-sized columns.
The biggest change to the Stock List Demo project for Beta 2 was the new policy requirements around creating a Sockets server which have been implemented in the updated sample :
Console.WriteLine("Accepting Policy Requests..."); // Read policy file byte[] policyBytes = File.ReadAllBytes("PolicyResponse.xml"); using (Socket client = policyListener.AcceptSocket()) { Console.WriteLine("Policy Request Accepted..."); // Get policy request header byte[] buffer = new byte[1024]; int bytesReceived = client.Receive(buffer); // Basic check of request header string header = Encoding.UTF8.GetString(buffer, 0, bytesReceived); if (header == "<policy-file-request/>") { client.Send(policyBytes, 0, policyBytes.Length, SocketFlags.None); } }
Please download the latest version for a substantial demonstration of many areas of Silverlight development including Socket interaction that complies with the new policy changes in Silverlight 2 Beta 2.
As part of the upgrade I did run into this issue of not being able to discover a WCF web-service in the same solution after installing Beta 2 when creating the new solution for Stock List Demo 3. The workaround at the end of the thread here solved the problem.
Please feel free to download the updated samples and as usual let me know any thoughts by adding a quick comment.