<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://bloggingabout.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Dennis van der Stelt : Silverlight</title><link>http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx</link><description>Tags: Silverlight</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Bing Maps on WPF and custom PushPin tutorial for PixelSense</title><link>http://bloggingabout.net/blogs/dennis/archive/2012/10/17/bing-maps-on-wpf-and-custom-pushpin-tutorial-for-pixelsense.aspx</link><pubDate>Wed, 17 Oct 2012 21:17:14 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:578123</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=578123</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=578123</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2012/10/17/bing-maps-on-wpf-and-custom-pushpin-tutorial-for-pixelsense.aspx#comments</comments><description>&lt;p&gt;I’ve just came back from a trip to &lt;a href="https://www.google.nl/search?q=washington+dc"&gt;Washington DC&lt;/a&gt;, where I’ve been at the &lt;a href="https://ww2.eventrebels.com/er/EventHomePage/CustomPage.jsp?ActivityID=7865&amp;amp;ItemID=29800"&gt;50th IAM International Moving Annual Meeting&lt;/a&gt;. This was for my employer &lt;a href="http://www.tellus.com/"&gt;TellUs&lt;/a&gt;, who’s into lead generation for international removal companies. A lot of people asked for the reason why I went to the states, this is it. And of course because we bought a Microsoft &lt;a href="http://www.microsoft.com/en-us/pixelsense/default.aspx"&gt;PixelSense&lt;/a&gt; table which we used to visualize our data on.&lt;/p&gt;  &lt;p&gt;The table had to ship however a little before we could finish the applications. After installing them at the convention, everything worked flawlessly. Well, until our sales representatives started working with it. We build a map with thousands of clustered pushpins on it. But there was a problem.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The push pins did not rotate when sales reps rotated the map!!!      &lt;br /&gt;For some reason we did not test rotation of the map on our desktop monitors. Go figure! ;-) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This blogpost is how I solved this issue.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating the map and adding pushpins      &lt;br /&gt;&lt;/strong&gt;At the convention, we loaded data and placed push pins on the map. For this tutorial we’ll add them via the double-click event of your mouse. Rotation of the map will occur via clicking on the push pins. The push pins will rotate themselves according to rotation of the map. This tutorial was writing in Visual Studio 2010, because Visual Studio 2012 doesn’t support development for PixelSense (yet). If you are completely unfamiliar with adding push pins to a WPF Bing map, check out &lt;a href="http://msdn.microsoft.com/en-us/library/hh709044.aspx"&gt;this tutorial on MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;First, create a new project by pressing CTRL+SHIFT+N and select “WPF Application” under the “Windows” category. You should end up with an almost empty XAML file with a grid in it. Let’s first add the map to it. First add a reference to the Bing assembly that has all the controls. It should be located in one of the following folders&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;C:\Program Files\Bing Maps WPF Control\V1\Libraries\Microsoft.Maps.MapControl.WPF.dll &lt;/li&gt;    &lt;li&gt;C:\Program Files (x86)\Bing Maps WPF Control\V1\Libraries\Microsoft.Maps.MapControl.WPF.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After having added the reference, add the namespace to the MainWindow.xaml and add the map. You should end up with the following code.&lt;/p&gt;  &lt;pre class="brush: xml;"&gt;&amp;lt;Window x:Class=&amp;quot;WpfApplication2.MainWindow&amp;quot;
                xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
                xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
                xmlns:m=&amp;quot;clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF&amp;quot;
                Title=&amp;quot;MainWindow&amp;quot; Height=&amp;quot;350&amp;quot; Width=&amp;quot;525&amp;quot;&amp;gt;
    &amp;lt;Grid&amp;gt;
        &amp;lt;m:Map x:Name=&amp;quot;myMap&amp;quot; CredentialsProvider=&amp;quot;PutYourOwnKeyHere-ItShouldBeVeryLong&amp;quot; /&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/Window&amp;gt;&lt;/pre&gt;

&lt;p&gt;The CredentialsProvider should have a key that you’ve requested on &lt;a href="http://www.bingmapsportal.com/"&gt;this page&lt;/a&gt; or follow the short tutorial on &lt;a href="http://msdn.microsoft.com/en-us/library/hh709042.aspx"&gt;this page&lt;/a&gt;. After adding the key you can already run the application and be able to zoom and pan the map.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding PushPins from code 
    &lt;br /&gt;&lt;/strong&gt;As you can see in the above code, I’ve already given my map a name via x:Name attribute. This way I can access my map from code-behind. This way I can set up my code for the double-click event on the map so I can add a PushPin on every double-click by the user. We’ll quickly run through the code, which shouldn’t be very complex.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public partial class MainWindow : Window
{
    int counter = 0;

    public MainWindow()
    {
        InitializeComponent();

        myMap.MouseDoubleClick += new MouseButtonEventHandler(myMap_MouseDoubleClick);
    }

    private void myMap_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        e.Handled = true;

        Point mousePosition = e.GetPosition(this);
        Location pinLocation = myMap.ViewportPointToLocation(mousePosition);

        Pushpin pin = new Pushpin();
        pin.Location = pinLocation;
        pin.Content = counter += 10;
        pin.MouseDown += new MouseButtonEventHandler(pin_MouseDown);

        myMap.Children.Add(pin);
    }

    private void pin_MouseDown(object sender, MouseButtonEventArgs e)
    {
    }
}&lt;/pre&gt;

&lt;p&gt;On line 3 you see a counter variable, which we’ll use to add unique push pins to our map. In the constructor MainWindow() you can see that we set up the handler for the double-click event. This is standard .NET code. In the myMap_MouseDoubleClick event handler, we first set e.Handled to true. Otherwise the map control will try to handle the click itself as well, making it zoom-in every time we add a push pin.&lt;/p&gt;

&lt;p&gt;In the next two lines we try to retrieve the exact location where we clicked. This can all be viewed in the MSDN documentation and is standard behavior. Then we instantiate a new Pushpin object, give it the location we just ‘calculated’ and add the value of the counter variable to it as content. As you can see we’ve also already set up the event handler for when we press the pushpin itself.&lt;/p&gt;

&lt;p&gt;At line 24 we add the Pushpin to the map so that it will be shown. You can now run this application and start double clicking on the map yourself.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/7077.map1_5F00_379BB13A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="map1" border="0" alt="map1" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/5001.map1_5F00_thumb_5F00_5B082FD2.png" width="400" height="267" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rotating the map &amp;amp; Pushpins 
    &lt;br /&gt;&lt;/strong&gt;We will now rotate the map as a reaction of the Pushpin that is being clicked by the user. Edit the event handler for the Pushpin click as follows&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;private void pin_MouseDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;

    var pushPinContent = 0;
    var pushPin = sender as Pushpin;
    if (pushPin != null &amp;amp;&amp;amp; pushPin.GetType() == typeof(Pushpin))
        pushPinContent = Convert.ToInt32(pushPin.Content);

    myMap.Heading = (double)pushPinContent;
}&lt;/pre&gt;

&lt;p&gt;As you can see we set the event as being handled again at line 3. The sender of the event should be a Pushpin, so we verify this first and then try to obtain the value of the content of the pin itself. After that, we set the heading of the map, which is the rotation. If you now run the application and start clicking the Pushpins (after adding a few), the map should rotate, but the Pushpins should not.&lt;/p&gt;

&lt;p&gt;We can easily fix this by binding the heading property of the Pushpin itself, to the heading of the map control. This can be done by the following code, which should be placed directly before we add the Pushpin to the map control.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;Binding binding = new Binding();
binding.Source = myMap;
binding.Path = new PropertyPath(&amp;quot;Heading&amp;quot;);
binding.Mode = BindingMode.OneWay;
pin.SetBinding(Pushpin.HeadingProperty, binding);

myMap.Children.Add(pin);&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Customizing the Pushpin 
    &lt;br /&gt;&lt;/strong&gt;We will now start customizing the Pushpin to make it show completely different from the default Pushpins. For this we need to create a ControlTemplate in the xaml file. First add a section for static resources in the root object, the Window. Then add the template for the Pushpin. In your existing xaml file, just place the following code directly &lt;u&gt;before&lt;/u&gt; the &amp;lt;grid&amp;gt; element.&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;Window.Resources&amp;gt;
    &amp;lt;ControlTemplate x:Key=&amp;quot;CutomPushpinTemplate&amp;quot; TargetType=&amp;quot;m:Pushpin&amp;quot;&amp;gt;
        &amp;lt;Grid x:Name=&amp;quot;ContentGrid&amp;quot; HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Center&amp;quot;&amp;gt;
            &amp;lt;StackPanel&amp;gt;
                &amp;lt;Grid Margin=&amp;quot;0&amp;quot; Width=&amp;quot;33&amp;quot; Height=&amp;quot;33&amp;quot;&amp;gt;
                    &amp;lt;Rectangle HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;-0.208,13.238,0,-0.146&amp;quot; Width=&amp;quot;10.555&amp;quot; Fill=&amp;quot;#FF005167&amp;quot; RenderTransformOrigin=&amp;quot;0.5,0.5&amp;quot;&amp;gt;
                        &amp;lt;Rectangle.RenderTransform&amp;gt;
                            &amp;lt;TransformGroup&amp;gt;
                                &amp;lt;ScaleTransform/&amp;gt;
                                &amp;lt;SkewTransform AngleX=&amp;quot;-23&amp;quot;/&amp;gt;
                                &amp;lt;RotateTransform Angle=&amp;quot;-12.944&amp;quot;/&amp;gt;
                                &amp;lt;TranslateTransform/&amp;gt;
                            &amp;lt;/TransformGroup&amp;gt;
                        &amp;lt;/Rectangle.RenderTransform&amp;gt;
                    &amp;lt;/Rectangle&amp;gt;

                    &amp;lt;Rectangle Fill=&amp;quot;White&amp;quot; Stroke=&amp;quot;#FF005167&amp;quot; RadiusX=&amp;quot;5&amp;quot; RadiusY=&amp;quot;5&amp;quot;/&amp;gt;

                    &amp;lt;ContentPresenter HorizontalAlignment=&amp;quot;Center&amp;quot;
                                                                VerticalAlignment=&amp;quot;Center&amp;quot;
                                                                Content=&amp;quot;{TemplateBinding Content}&amp;quot;
                                                                ContentTemplate=&amp;quot;{TemplateBinding ContentTemplate}&amp;quot;
                                                                Margin=&amp;quot;0&amp;quot; TextBlock.FontFamily=&amp;quot;Segoe UI&amp;quot; TextBlock.FontWeight=&amp;quot;Bold&amp;quot; TextBlock.Foreground=&amp;quot;#FFB8D30B&amp;quot;&amp;gt;
                    &amp;lt;/ContentPresenter&amp;gt;
                &amp;lt;/Grid&amp;gt;
            &amp;lt;/StackPanel&amp;gt;
        &amp;lt;/Grid&amp;gt;
    &amp;lt;/ControlTemplate&amp;gt;
&amp;lt;/Window.Resources&amp;gt;&lt;/pre&gt;

&lt;p&gt;You can see we added a ControlTemplate which has a TargetType for our Pushpin objects. This we will bind to our Pushpins later. I’ve made the Pushpins look a bit like our TellUs logo and for this I needed a rectangle with rounded corners. Directly behind it I placed another rectangle that I skewed and rotated a bit to make it look a bit like a balloon. Then I added a ContentPresenter that should show the numerical value and I’ve also added some font settings to it. Nothing spectacular, but it’s nice if you know how to do it! ;-)&lt;/p&gt;

&lt;p&gt;Now we move back to our code again and we need to do three things.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Locate the control template for our Pushpin &lt;/li&gt;

  &lt;li&gt;Bind it to our Pushpin &lt;/li&gt;

  &lt;li&gt;Set the PositionOrigin of our PushPin. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This setting of the PositionOrigin is important to us, because our customized Pushpin should be placed to the top and to the right of where we click. I’ve included some code that we already had for additional clarity of where to put the code.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;ControlTemplate template = (ControlTemplate)this.FindResource(&amp;quot;CutomPushpinTemplate&amp;quot;);

Pushpin pin = new Pushpin();
pin.Template = template;
pin.PositionOrigin = PositionOrigin.BottomLeft;
pin.Location = pinLocation;
pin.Content = counter += 10;
pin.MouseDown += new MouseButtonEventHandler(pin_MouseDown);&lt;/pre&gt;

&lt;p&gt;If we run our application again it should look like this after adding a few Pushpins and rotating them.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/3716.map2_5F00_63A8885E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="map2" border="0" alt="map2" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8865.map2_5F00_thumb_5F00_0061FD74.png" width="400" height="267" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8738.map3_5F00_04F8082E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="map3" border="0" alt="map3" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/0777.map3_5F00_thumb_5F00_7F7971BC.png" width="400" height="267" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding custom styling based on content of the Pushpin 
    &lt;br /&gt;&lt;/strong&gt;Now one really interesting thing to do is setting the size of the content/text of the Pushpin based on the number. If we start adding a lot of Pushpins this way and we start adding pins that have a numerical value of higher than 999, the font is too big so the value will fall outside of the boundaries of the pin.&lt;/p&gt;

&lt;p&gt;For this we need a ValueConverter first. Based on the value that is inside the content of the Pushpin, we’ll return the FontSize. This FontSize then needs to be set to the style of the ContentPresenter. First let’s have a look at the ValueConverter. Add this directly beneath your MainWindow class, so that (in this tutorial) we don’t have the additional hassle of namespace problems.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public class PushPinContentConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int pushPinContentValue;
        if (int.TryParse(value.ToString(), out pushPinContentValue))
        {
            if (pushPinContentValue &amp;gt;= 1000)
                return 12;
            else
                return 15;
        }

        // If convert fails!
        return 14;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}&lt;/pre&gt;

&lt;p&gt;As you can see we try to extract the content from the Pushpin and if the value is higher than (or equally to) a 1000, we’ll lower the FontSize. Now we need to add this converter to the static resources of the Window in the xaml. First add a namespace reference (as seen in line 5) and then add it as a resource itself (as seen in line 9).&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;Window x:Class=&amp;quot;WpfApplication1.MainWindow&amp;quot;
        xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
        xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
        xmlns:m=&amp;quot;clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF&amp;quot;
        xmlns:local=&amp;quot;clr-namespace:WpfApplication1&amp;quot;
        Title=&amp;quot;MainWindow&amp;quot; Width=&amp;quot;700&amp;quot; Height=&amp;quot;500&amp;quot;&amp;gt;
    &amp;lt;Window.Resources&amp;gt;

        &amp;lt;local:PushPinContentConverter x:Key=&amp;quot;MyContentConverter&amp;quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;Finally we need to add the styling to the ContentPresenter. The only thing changed is the element &amp;lt;ContentPresenter.Style&amp;gt; and the elements within it.&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;ContentPresenter HorizontalAlignment=&amp;quot;Center&amp;quot;
                                            VerticalAlignment=&amp;quot;Center&amp;quot;
                                            Content=&amp;quot;{TemplateBinding Content}&amp;quot;
                                            ContentTemplate=&amp;quot;{TemplateBinding ContentTemplate}&amp;quot;
                                            Margin=&amp;quot;0&amp;quot; TextBlock.FontFamily=&amp;quot;Segoe UI&amp;quot; TextBlock.FontWeight=&amp;quot;Bold&amp;quot; TextBlock.Foreground=&amp;quot;#FFB8D30B&amp;quot;&amp;gt;
    &amp;lt;ContentPresenter.Style&amp;gt;
        &amp;lt;Style&amp;gt;
            &amp;lt;Setter Property=&amp;quot;TextBlock.FontSize&amp;quot; Value=&amp;quot;{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource MyContentConverter}}&amp;quot; /&amp;gt;
        &amp;lt;/Style&amp;gt;
    &amp;lt;/ContentPresenter.Style&amp;gt;
&amp;lt;/ContentPresenter&amp;gt;&lt;/pre&gt;

&lt;p&gt;I advise you to no start the counter variable at 0, but at 970, for your own testing pleasure. It’d be a whole lot of clicks if you started at 0 to see the results at Pushpin 1000 and higher.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion
    &lt;br /&gt;&lt;/strong&gt;All in all it is not so difficult to add a custom Pushpin, rotate it according to the map rotation and have the content sized based on its value. But information is fragmented and (for example) setting a ControlTemplate is mostly only shown in code if you start searching for it. I hope it’s beneficial for you to see it all in one place.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/media/p/578122.aspx"&gt;Download the entire solution here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If this was usable, leave a comment and tell me your problems and/or results. Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=578123" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Development/default.aspx">Development</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/WPF/default.aspx">WPF</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/PixelSense/default.aspx">PixelSense</category></item><item><title>Silverlight vs. Windows Forms or ASP.NET</title><link>http://bloggingabout.net/blogs/dennis/archive/2010/12/04/silverlight-vs-windows-forms-or-asp-net.aspx</link><pubDate>Sat, 04 Dec 2010 22:15:56 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:484376</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=484376</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=484376</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2010/12/04/silverlight-vs-windows-forms-or-asp-net.aspx#comments</comments><description>&lt;p&gt;Some time ago I went to a great presentation, organized by &lt;a href="http://community.dotned.nl/"&gt;DotNed&lt;/a&gt;, held at &lt;a href="http://www.vicrea.nl/"&gt;Vicrea&lt;/a&gt; and given by &lt;a href="http://community.dotned.nl/blogs/dennis_blog/"&gt;Dennis Vroegop&lt;/a&gt; and &lt;a href="http://blogs.oosterkamp.nl/blogs/thomas/"&gt;Thomas Huijer&lt;/a&gt;. At some point Dennis Vroegop mentioned that he saw a lot of old Windows Forms developers, create WPF applications like they were still developing Windows Forms applications. What Dennis meant was that these developers were handling click events the same way they did before. At first I thought that he was talking about boring line of business (LOB) applications with just textboxes and buttons in them, without a cool design or something different in user experience (UX). In a series of posts I’ll see if I can lighten up both of our points. So this is not really a one versus the other, but more on showing you how Silverlight can help you create a better user interface and have more powerful databinding.&lt;/p&gt;  &lt;p&gt;First I’m going to explain what I meant by creating a normal ListBox with layout that’s extremely hard to accomplish in Windows Forms. We’ll keep it extremely simple. After that I’ll show how you can do this with Master-Detail as well, very easily. And later I’ll show you how to do this with an MVVM implementation.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Creating a class and repository      &lt;br /&gt;&lt;/strong&gt;We need some data and we normally get this from a database using webservices. In this example I’ll create a repository class, as I said I’m going to keep it extremely simple. Building webservices via WCF is discussed extensively throughout this weblog elsewhere.&lt;/p&gt;  &lt;p&gt;We’ll take on of my favorite subjects, games. Let’s create a class that contains our data.&lt;/p&gt;  &lt;pre class="brush: csharp;"&gt;public class Game
{
    public string Name { get; set; }
    public int YearOfRelease { get; set; }
    public string Developer { get; set; }
    public string ImageUrl { get; set; }
}&lt;/pre&gt;

&lt;p&gt;Now let’s create our repository.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public class Repository
{
    public static ObservableCollection&amp;lt;Game&amp;gt; GetAllGames()
    {
        return new ObservableCollection&amp;lt;Game&amp;gt;()
        {
            new Game() { Name = &amp;quot;Assassin&amp;#39;s Creed : Brotherhood&amp;quot;, Developer = &amp;quot;Ubisoft&amp;quot;, YearOfRelease = 2010, ImageUrl = @&amp;quot;http://upload.wikimedia.org/wikipedia/en/2/2a/Assassins_Creed_brotherhood_cover.jpg&amp;quot; },
            new Game() { Name = &amp;quot;Call of Duty: Modern Warfare 2&amp;quot;, Developer = &amp;quot;Infinity Ward&amp;quot;, YearOfRelease = 2009, ImageUrl = @&amp;quot;http://upload.wikimedia.org/wikipedia/en/d/db/Modern_Warfare_2_cover.PNG&amp;quot; },
            new Game() { Name = &amp;quot;FIFA 11&amp;quot;, Developer=&amp;quot;Electronic Arts&amp;quot;, YearOfRelease = 2010, ImageUrl = @&amp;quot;http://upload.wikimedia.org/wikipedia/en/9/97/Fifa11_keyart_uk-492x600.jpg&amp;quot; },
            new Game() { Name = &amp;quot;Quake&amp;quot;, Developer = &amp;quot;id Software&amp;quot;, YearOfRelease = 1996, ImageUrl = @&amp;quot;http://upload.wikimedia.org/wikipedia/en/4/4c/Quake1cover.jpg&amp;quot; },
            new Game() { Name = &amp;quot;Half-Life&amp;quot;, Developer = &amp;quot;Valve&amp;quot;, YearOfRelease = 1998, ImageUrl = @&amp;quot;http://upload.wikimedia.org/wikipedia/en/f/fa/Half-Life_Cover_Art.jpg&amp;quot; }
        };
    }
}&lt;/pre&gt;

&lt;p&gt;I’ve put these two classes inside the Silverlight Application I’ve created. Now that we’ve got our data, let’s first create some layout that can present our games.&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;UserControl x:Class=&amp;quot;BindingExample.MainPage&amp;quot;
    xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;
    xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;
    mc:Ignorable=&amp;quot;d&amp;quot;
    d:DesignHeight=&amp;quot;300&amp;quot; d:DesignWidth=&amp;quot;400&amp;quot;&amp;gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Margin=&amp;quot;10&amp;quot;&amp;gt;
        &amp;lt;ListBox x:Name=&amp;quot;gamesListBox&amp;quot; ItemsSource=&amp;quot;{Binding}&amp;quot; Width=&amp;quot;300&amp;quot; Height=&amp;quot;300&amp;quot;&amp;gt;
        &amp;lt;/ListBox&amp;gt;
    &amp;lt;/StackPanel&amp;gt;
&amp;lt;/UserControl&amp;gt;&lt;/pre&gt;

&lt;p&gt;This is very basic and it doesn’t even show the right results as you can see in the first image below. Let’s change the XAML so that it’ll show the results we’d normally expect.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/5468.WeirdData_5F00_0896DE1A.png"&gt;&lt;img style="border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WeirdData" border="0" alt="WeirdData" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/4617.WeirdData_5F00_thumb_5F00_2845B7E2.png" width="240" height="121" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8304.NormalData_5F00_0EDDB4A8.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="NormalData" border="0" alt="NormalData" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/0513.NormalData_5F00_thumb_5F00_009F3BB8.png" width="240" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Margin=&amp;quot;10&amp;quot;&amp;gt;
    &amp;lt;ListBox x:Name=&amp;quot;gamesListBox&amp;quot; ItemsSource=&amp;quot;{Binding}&amp;quot; DisplayMemberPath=&amp;quot;Name&amp;quot; Width=&amp;quot;300&amp;quot; Height=&amp;quot;300&amp;quot;&amp;gt;
    &amp;lt;/ListBox&amp;gt;
&amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;

&lt;p&gt;As you can see, the only thing changed is the added DisplayMemberPath attribute. But we can do this in Windows Forms as well. Let’s do some magic.&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;ListBox x:Name=&amp;quot;gamesListBox&amp;quot; ItemsSource=&amp;quot;{Binding}&amp;quot; Width=&amp;quot;300&amp;quot; Height=&amp;quot;300&amp;quot;&amp;gt;
    &amp;lt;ListBox.ItemTemplate&amp;gt;
        &amp;lt;DataTemplate&amp;gt;
            &amp;lt;StackPanel Grid.Column=&amp;quot;1&amp;quot; Margin=&amp;quot;3,0,0,0&amp;quot;&amp;gt;
                &amp;lt;TextBlock Text=&amp;quot;{Binding Path=Name}&amp;quot; FontWeight=&amp;quot;Bold&amp;quot; Margin=&amp;quot;0&amp;quot; Padding=&amp;quot;0&amp;quot;/&amp;gt;
                &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; Margin=&amp;quot;3,0,0,0&amp;quot;&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;Released&amp;quot; Width=&amp;quot;80&amp;quot; /&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;: &amp;quot; /&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;{Binding Path=YearOfRelease}&amp;quot; Width=&amp;quot;50&amp;quot; Margin=&amp;quot;0&amp;quot; Padding=&amp;quot;0&amp;quot;/&amp;gt;
                &amp;lt;/StackPanel&amp;gt;
                &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; Margin=&amp;quot;3,0,0,0&amp;quot;&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;Developer&amp;quot; Width=&amp;quot;80&amp;quot; /&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;: &amp;quot; /&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;{Binding Path=Developer}&amp;quot; /&amp;gt;
                &amp;lt;/StackPanel&amp;gt;
            &amp;lt;/StackPanel&amp;gt;
        &amp;lt;/DataTemplate&amp;gt;
    &amp;lt;/ListBox.ItemTemplate&amp;gt;
&amp;lt;/ListBox&amp;gt;&lt;/pre&gt;

&lt;p align="center"&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/8306.DataTemplate_5F00_WithoutImage_5F00_15248B36.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DataTemplate_WithoutImage" border="0" alt="DataTemplate_WithoutImage" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/0207.DataTemplate_5F00_WithoutImage_5F00_thumb_5F00_66CB0588.png" width="240" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now this is nice. What’s happening here?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;We removed the DisplayMemberPath attribute, as we are going to very specifically define how we want to see the data. &lt;/li&gt;

  &lt;li&gt;We’ve added a DataTemplate, which describes the visual structure of a data object, according to MSDN :-) &lt;/li&gt;

  &lt;li&gt;Next we’ve defined some StackPanels and TextBlocks to define where and how to show the data. 
    &lt;br /&gt;We’ve used more than one property from our Game class, some bold text and margins to make it more attractive. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I think this is very user friendly. Imagine a lot of customers in your database, some of them with names very alike or with offices in different locations. Instead of just seeing the name of the customer, you also get presented the location, etc. Now as these are games, there’s probably a little box art available somewhere on the web. Let’s show this as well. Imagine that instead of box art, you present photos of your customers their faces! ;-)&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;ListBox x:Name=&amp;quot;gamesListBox&amp;quot; ItemsSource=&amp;quot;{Binding}&amp;quot; Width=&amp;quot;300&amp;quot; Height=&amp;quot;300&amp;quot;&amp;gt;
    &amp;lt;ListBox.ItemTemplate&amp;gt;
        &amp;lt;DataTemplate&amp;gt;
            &amp;lt;Grid&amp;gt;
                &amp;lt;Grid.ColumnDefinitions&amp;gt;
                    &amp;lt;ColumnDefinition /&amp;gt;
                    &amp;lt;ColumnDefinition /&amp;gt;
                &amp;lt;/Grid.ColumnDefinitions&amp;gt;
                &amp;lt;Image Source=&amp;quot;{Binding Path=ImageUrl}&amp;quot; Width=&amp;quot;50&amp;quot; Stretch=&amp;quot;UniformToFill&amp;quot; Grid.Column=&amp;quot;0&amp;quot; /&amp;gt;
                &amp;lt;StackPanel Grid.Column=&amp;quot;1&amp;quot; Margin=&amp;quot;3,0,0,0&amp;quot;&amp;gt;
                    &amp;lt;TextBlock Text=&amp;quot;{Binding Path=Name}&amp;quot; FontWeight=&amp;quot;Bold&amp;quot; Margin=&amp;quot;0&amp;quot; Padding=&amp;quot;0&amp;quot;/&amp;gt;
                    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; Margin=&amp;quot;3,0,0,0&amp;quot;&amp;gt;
                        &amp;lt;TextBlock Text=&amp;quot;Released&amp;quot; Width=&amp;quot;80&amp;quot; /&amp;gt;
                        &amp;lt;TextBlock Text=&amp;quot;: &amp;quot; /&amp;gt;
                        &amp;lt;TextBlock Text=&amp;quot;{Binding Path=YearOfRelease}&amp;quot; Width=&amp;quot;50&amp;quot; Margin=&amp;quot;0&amp;quot; Padding=&amp;quot;0&amp;quot;/&amp;gt;
                    &amp;lt;/StackPanel&amp;gt;
                    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; Margin=&amp;quot;3,0,0,0&amp;quot;&amp;gt;
                        &amp;lt;TextBlock Text=&amp;quot;Developer&amp;quot; Width=&amp;quot;80&amp;quot; /&amp;gt;
                        &amp;lt;TextBlock Text=&amp;quot;: &amp;quot; /&amp;gt;
                        &amp;lt;TextBlock Text=&amp;quot;{Binding Path=Developer}&amp;quot; /&amp;gt;
                    &amp;lt;/StackPanel&amp;gt;
                &amp;lt;/StackPanel&amp;gt;
            &amp;lt;/Grid&amp;gt;
        &amp;lt;/DataTemplate&amp;gt;
    &amp;lt;/ListBox.ItemTemplate&amp;gt;
&amp;lt;/ListBox&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/5148.DataTemplate_5F00_WithImage_5F00_3F24895E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DataTemplate_WithImage" border="0" alt="DataTemplate_WithImage" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/0574.DataTemplate_5F00_WithImage_5F00_thumb_5F00_372CE6FC.png" width="240" height="240" /&gt;&lt;/a&gt;And this results in a very simple but very nice ListBox with very usable items. And the best part is that you can still use gamesListBox.SelectedItem to get the complete Game object, as you’d expect.&lt;/p&gt;

&lt;p&gt;Of course it’s even better to add the DataTemplate to a resource, which will result in the following XAML.&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;UserControl.Resources&amp;gt;
    &amp;lt;DataTemplate x:Key=&amp;quot;gameDataTemplate&amp;quot;&amp;gt;
        &amp;lt;Grid&amp;gt;
            ...
        &amp;lt;/Grid&amp;gt;
    &amp;lt;/DataTemplate&amp;gt;
&amp;lt;/UserControl.Resources&amp;gt;
&amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Margin=&amp;quot;10&amp;quot;&amp;gt;
    &amp;lt;ListBox x:Name=&amp;quot;gamesListBox&amp;quot; ItemsSource=&amp;quot;{Binding}&amp;quot; Width=&amp;quot;300&amp;quot; Height=&amp;quot;300&amp;quot;
             ItemTemplate=&amp;quot;{StaticResource gameDataTemplate}&amp;quot; /&amp;gt;
&amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;
I hope this clarifies my point on how you can enhance your boring Line of Business (LOB) application with better usability for your end users.


&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=484376" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>SDN Event June 2009</title><link>http://bloggingabout.net/blogs/dennis/archive/2009/06/27/sdn-event-june-2009.aspx</link><pubDate>Sat, 27 Jun 2009 13:52:41 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:481865</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=481865</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=481865</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2009/06/27/sdn-event-june-2009.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/3000.DSC_5F00_0166_5F00_17C7C722.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="DSC_0166" border="0" alt="DSC_0166" align="right" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dennis.metablogapi/4747.DSC_5F00_0166_5F00_thumb_5F00_01B135C3.jpg" width="240" height="159" /&gt;&lt;/a&gt; Yesterday was a great day as the SDN Event took place in Houten. The location was really great and the food never has been better. The poll on the website shows others agree with me. Thanks to those who attended my sessions. Sorry to those who wanted to know more about SQL Data Services, but know that all I demoed yesterday in Silverlight 3 and .NET Ria Services should be (almost) immediately be transportable to Azure and SQL Data Services in the near future. I included scripts to generate the database for the Silverlight demo.&lt;/p&gt;  &lt;p&gt;I have uploaded the slides and demos to the media section on BloggingAbout.NET.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Windows Azure &lt;/strong&gt;(&lt;a href="http://bloggingabout.net/media/p/481861.aspx"&gt;slides&lt;/a&gt; and &lt;a href="http://bloggingabout.net/media/p/481863.aspx"&gt;demo&lt;/a&gt;)       &lt;br /&gt;Met Windows Azure kunnen we applicaties hosten in de cloud. Maar wat betekent dat voor onze applicaties? En wat is het verschil tussen de web-role en worker-role? En hoe communiceren deze? Hoe slaan ze data op? Wat betekent dit voor development en deployment? Deze vragen zullen beantwoord worden in een sessie met weinig slides maar veel code om een WCF service te bouwen waarmee we informatie over mobiele flitsers beschikbaar maken. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SQL Data Services and Silverlight 3&lt;/strong&gt; (&lt;a href="http://bloggingabout.net/media/p/481862.aspx"&gt;slides&lt;/a&gt; and &lt;a href="http://bloggingabout.net/media/p/481864.aspx"&gt;demo&lt;/a&gt;)       &lt;br /&gt;Silverlight 3 heeft nieuwe mogelijkheden om eenvoudiger met een backend systeem te communiceren en gegevens uit een database te bewerken. Met SQL Data Services kun je een database &amp;#39;in the cloud&amp;#39; plaatsen waarna je geen zorgen meer hebt over infrastructuur. Maar wat zijn de mogelijkheden en wat is er anders dan bij een lokale database? Nog interessanter wordt het als we deze twee technologieën gaan combineren. In deze sessie zal getoond worden hoe met Silverlight een LOB applicatie is te realiseren met het door Windows Azure gehoste SQL Data Services als storage model. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you have questions about Azure, Azure Storage, .NET Services, Silverlight or anything else, don’t hesitate to &lt;a href="http://bloggingabout.net/blogs/dennis/contact.aspx"&gt;contact me&lt;/a&gt;. And know that we give courses about all these subjects as well at &lt;a href="http://www.class-a.nl/"&gt;Class-A&lt;/a&gt;! :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=481865" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Azure/default.aspx">Azure</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/SDN/default.aspx">SDN</category></item><item><title>Silverlight 3 SDK Beta 1</title><link>http://bloggingabout.net/blogs/dennis/archive/2009/03/18/silverlight-3-sdk-beta-1.aspx</link><pubDate>Wed, 18 Mar 2009 15:06:55 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:481377</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=481377</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=481377</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2009/03/18/silverlight-3-sdk-beta-1.aspx#comments</comments><description>&lt;p&gt;Via Twitter @&lt;a href="http://twitter.com/MarcelMeijer/status/1348569817"&gt;MarcelMeijer&lt;/a&gt; and &lt;a href="http://www.sdn.nl/SDN/Artikelen/tabid/58/agentType/View/PropertyID/2900/Default.aspx"&gt;SDN site&lt;/a&gt;, that &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=D09B6ECF-9A45-4D99-B752-2A330A937BC4&amp;amp;displaylang=en"&gt;Silverlight 3 SDK Beta 1&lt;/a&gt; was just released, a few hours before Mix09.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=481377" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>PDC 2008 : Keynote 2</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/10/28/pdc-2008-keynote-2.aspx</link><pubDate>Tue, 28 Oct 2008 17:07:04 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:476292</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=476292</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=476292</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/10/28/pdc-2008-keynote-2.aspx#comments</comments><description>&lt;p&gt;Scott Guthrie is talking… Very fast what he’s talking about…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WPF 4.0 has touch &lt;/li&gt;    &lt;li&gt;.NET 4.0 can be loaded in the same process as .NET 2.0 &lt;/li&gt;    &lt;li&gt;Visual Studio 2010 is build in WPF &lt;/li&gt;    &lt;li&gt;Ability to create awesome visualizers in Vsual Studio 2010      &lt;br /&gt;Scott just shows us a 200 line code visualizer that replaces the normal /// comments with a nice box with much richer presentation       &lt;br /&gt;This runs on &lt;a href="http://code.msdn.microsoft.com/mef"&gt;MEF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;MVC will be released in upcoming months &lt;/li&gt;    &lt;li&gt;jQuery intellisense support for Visual Studio 2008 &lt;a href="http://jquery.com/"&gt;right now&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;ASP.NET news      &lt;ul&gt;       &lt;li&gt;Better deployment options, like having multiple web.config files (or deltas) under the normal web.config &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;IIS smooth streaming for (amongst others) Silverlight streaming video will be released &lt;/li&gt;    &lt;li&gt;Silverlight      &lt;ul&gt;       &lt;li&gt;1 in 4 machines have Silverlight installed, according to ScottGu &lt;/li&gt;        &lt;li&gt;New controls like Charting, TreeView, Dock Panel, etc.          &lt;br /&gt;Full access to source code, of course &lt;/li&gt;        &lt;li&gt;Updated Silverlight designer in Visual Studio 2010, based on WPF work done for VS2010&lt;/li&gt;        &lt;li&gt;Run Silverlight inside and &lt;strong&gt;outside the browser&lt;/strong&gt; &lt;/li&gt;        &lt;li&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Strange, nothing about Silverlight 2.0 on mobile. There is a session about it though, but I’m going to “Oslo” sessions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=476292" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/PDC08/default.aspx">PDC08</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Silverlight 2.0 on mobile announced today</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/10/28/silverlight-2-0-on-mobile-announced-today.aspx</link><pubDate>Tue, 28 Oct 2008 16:58:46 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:476290</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=476290</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=476290</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/10/28/silverlight-2-0-on-mobile-announced-today.aspx#comments</comments><description>&lt;p&gt;Yesterday Alex and I spoke to some people and from two resources we got to learn that Silverlight for mobile devices will most likely be revealed today at the keynote by Scott Guthrie.&lt;/p&gt;  &lt;p&gt;The best is, it’s already able to run managed code. So that means Microsoft is skipping the first version and is immediately releasing Silverlight 2.0 for mobile devices.&lt;/p&gt;  &lt;p&gt;More on this today, most likely on many weblogs!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=476290" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/PDC08/default.aspx">PDC08</category></item><item><title>Silverlight 2 released!</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/10/14/silverlight-2-released.aspx</link><pubDate>Tue, 14 Oct 2008 11:52:14 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:475558</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=475558</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=475558</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/10/14/silverlight-2-released.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/10/14/silverlight-2-released.aspx"&gt;Silverlight 2.0 was just released&lt;/a&gt; a few hours ago! Awesome news! If you look at Scott Guthrie’s website, it was released a 3:07 AM. Some sick people over there! The first comment is more than three hours later, when people turned up for work! :-)&lt;/p&gt;  &lt;p&gt;At Class-A we’re definitely going to provide training in Silverlight 2.0 so keep a watch on &lt;a href="http://www.class-a.nl/"&gt;our site&lt;/a&gt; for more info. If you want to be mailed about it, &lt;a href="http://bloggingabout.net/blogs/dennis/contact.aspx"&gt;get in contact&lt;/a&gt; with us and we’ll notify you.&lt;/p&gt;  &lt;p&gt;If you want to get started with Silverlight 2, &lt;a href="http://silverlight.net/GetStarted/"&gt;go get it here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=475558" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight and clearing its isolated storage</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/03/14/silverlight-and-clearing-its-isolated-storage.aspx</link><pubDate>Fri, 14 Mar 2008 14:07:45 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:458048</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=458048</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=458048</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/03/14/silverlight-and-clearing-its-isolated-storage.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve been looking all around for information about Silverlight its Isolated Storage. I was doing some tests with storing files and wanted to clear the isolated storage. I&amp;#39;ll repeat the same words for SEO purposes : clear silverlight isolated storage. :-)&lt;/p&gt; &lt;p align="center"&gt;&lt;img height="63" alt="silverlight_folder" src="http://bloggingabout.net/blogs/dennis/WindowsLiveWriter/Silverlightandclearingitsisolatedstorage_C2DA/silverlight_folder_3.png" width="680" border="0" /&gt; &lt;/p&gt; &lt;p&gt;After I finally found the folder myself, using Sysinternals ProcessMonitor, I searched again on the internet if anyone had referenced the folder yet. Of course the one and only &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/03/07/10226.aspx"&gt;Mike Taulty did&lt;/a&gt;. How come &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/02/25/10205.aspx"&gt;these three English chaps&lt;/a&gt; do so much great work?&lt;/p&gt; &lt;p&gt;The word is that the isolated storage for Silverlight is cleared when the browser cache is flushed, and perhaps it&amp;#39;s because of the beta, but this wasn&amp;#39;t my experience. If you want to clear the cache, go to the folder below, find the specific file(s) and delete them there.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;C:\Users\Dennis\AppData\LocalLow\Microsoft\Silverlight\is&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;If you want more information about Isolated Storage in Silverlight 2, check out &lt;a href="http://silverlight.net/Quickstarts/IsoStore/StoreData.aspx"&gt;this page&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=458048" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>"How Do I?" Videos</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/03/12/quot-how-do-i-quot-videos.aspx</link><pubDate>Wed, 12 Mar 2008 19:59:14 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:458040</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=458040</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=458040</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/03/12/quot-how-do-i-quot-videos.aspx#comments</comments><description>&lt;p&gt;When people want start learning about .NET in general or a specific subject like Silverlight or security, can be send to the &amp;quot;How Do I?&amp;quot; videos. I do this myself a lot of times, because a lot of videos aren&amp;#39;t 60+ minutes.&lt;/p&gt; &lt;p&gt;Just as a reminder to myself, &lt;a href="http://msdn2.microsoft.com/en-us/bb629407.aspx"&gt;the root url is this one&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=458040" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/.NET+Compact+Framework+3.5/default.aspx">.NET Compact Framework 3.5</category></item><item><title>Getting started with Silverlight 2</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/03/11/getting-started-with-silverlight-2.aspx</link><pubDate>Tue, 11 Mar 2008 07:21:36 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:458024</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=458024</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=458024</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/03/11/getting-started-with-silverlight-2.aspx#comments</comments><description>&lt;p&gt;If you&amp;#39;re ready for Silverlight 2, here are some links to help you get started.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Guy Burstein has &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/03/05/silverlight-2-beta-1-and-expression-blend-2-5-march-preview.aspx"&gt;a complete list&lt;/a&gt; with all the &lt;strong&gt;downloads&lt;/strong&gt;.  &lt;li&gt;If you&amp;#39;re running into &lt;strong&gt;troubles&lt;/strong&gt;, &lt;a href="http://weblogs.asp.net/bradleyb/archive/2008/03/06/installation-tips-for-sivliverlight-tools-beta-1-for-visual-studio-2008.aspx"&gt;here&amp;#39;s a list&lt;/a&gt; that might help you.  &lt;li&gt;Scott Guthrie has a bunch of &lt;strong&gt;tutorials&lt;/strong&gt; online &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx"&gt;here&lt;/a&gt;.  &lt;li&gt;Scott&amp;#39;s &lt;strong&gt;tutorials&lt;/strong&gt; can also be viewed in &lt;a href="http://www.smartwebcontrols.com/video/"&gt;Silverlight video&lt;/a&gt; at Dan Wahlin&amp;#39;s site.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And of course the regular sites like &lt;a href="http://silverlight.net/"&gt;silverlight.net&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=458024" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>MIX08 announcements</title><link>http://bloggingabout.net/blogs/dennis/archive/2008/03/05/mix08-announcements.aspx</link><pubDate>Wed, 05 Mar 2008 20:03:55 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:458005</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=458005</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=458005</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2008/03/05/mix08-announcements.aspx#comments</comments><description>&lt;p&gt;Last year was a surprise to developers that so much new technology was announced at MIX07. I was there and had a blast. This year I have to read the news from behind my pc. But I&amp;#39;m gathering all news for you and myself.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Silverlight 2 with GoLive license.&lt;br /&gt;It&amp;#39;s downloadable!&lt;br /&gt;&lt;a href="http://www.microsoft.com/silverlight/resources/installationFiles.aspx?v=2.0"&gt;Silverlight 2 Beta 1 for Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/silverlight/resources/installationFiles.aspx?v=2.0"&gt;Silverlight 2 Beta 1 for Mac&lt;/a&gt;  &lt;li&gt;Silverlight 2 now has controls.&lt;br /&gt;But that&amp;#39;s not just it, you get source code and a lot (!) of unit tests for the controls. Always nice to have a look at. &lt;li&gt;Silverlight on Nokia phones&lt;br /&gt;Microsoft announced that with the help of Nokia they&amp;#39;re porting Silverlight to the Nokia S60. The plan is to show it during the keynote.&lt;br /&gt;&lt;a href="http://blogs.zdnet.com/microsoft/?p=1236"&gt;Read more...&lt;/a&gt;  &lt;li&gt;&lt;strong&gt;Silverlight 2 for Windows Mobile&lt;/strong&gt;&lt;br /&gt;Yeah! All my dreams coming true! First .NET Compact Framework, then WCF and now Silverlight?! What could I want more?!&lt;br /&gt;See the first mobile app in Silverlight &lt;a href="http://silverlight.weatherbug.com/"&gt;here&lt;/a&gt;. This is IE though! :)  &lt;li&gt;Silverlight 2 and Seadragon&lt;br /&gt;Zooming in on extreme large images.  &lt;li&gt;Silverlight and Sharepoint&lt;br /&gt;Read about it &lt;a href="http://msdn2.microsoft.com/en-us/sharepoint/cc303301.aspx"&gt;here&lt;/a&gt;. &lt;li&gt;WPF &amp;amp; Shading support&lt;br /&gt;Support for some cool hardware accelerated shaders! Do I hear WPF games?! :)  &lt;li&gt;Internet Explorer 8 Beta 1&lt;br /&gt;It&amp;#39;s released, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C3C6E8C1-BD91-490B-86F5-F3652DD691DE&amp;amp;displaylang=en"&gt;download here&lt;/a&gt; for Vista, &lt;a href="http://go.microsoft.com/fwlink/?LinkId=110324"&gt;download for WinXP here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Awesome!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=458005" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight 2.0</title><link>http://bloggingabout.net/blogs/dennis/archive/2007/11/29/silverlight-2-0.aspx</link><pubDate>Thu, 29 Nov 2007 22:48:53 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:442062</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=442062</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=442062</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2007/11/29/silverlight-2-0.aspx#comments</comments><description>&lt;p&gt;You probably all read Scott Guthries weblog, so I don&amp;#39;t even have to create a link to it! ;-)&lt;/p&gt; &lt;p&gt;But he just announced Silverlight 2.0. It&amp;#39;s basically 1.1 with too many features to call it a point release. And while the list below isn&amp;#39;t the final list, it&amp;#39;s a cool list to see what&amp;#39;s coming in 2.0. A beta with GoLive license will be released Q1 2008. Hopefully sooner than later. And instead of just playing around with it, I&amp;#39;ll try to write some blog entries for it. One of my wishes is to build the Class-A WinterClass banner in Silverlight with snow that&amp;#39;ll stick on the ground or even on the Class-A logo or so.&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://www.class-a.nl/index.aspx?id=12&amp;amp;catID=16&amp;amp;sid=22"&gt;&lt;img src="http://bloggingabout.net/userfiles/winterclass.gif" border="0" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="left"&gt;Here&amp;#39;s Scott&amp;#39;s list of new features in Silverlight 2.0&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;u&gt;WPF UI Framework&lt;/u&gt;: The current Silverlight Alpha release only includes basic controls support and a managed API for UI drawing.&amp;nbsp; The next public Silverlight preview will add support for the higher level features of the WPF UI framework.&amp;nbsp; These include: the extensible control framework model, layout manager support, two-way data-binding support, and control template and skinning support.&amp;nbsp; The WPF UI Framework features in Silverlight will be a compatible subset of the WPF UI Framework features in last week&amp;#39;s .NET Framework 3.5 release.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;u&gt;Rich Controls&lt;/u&gt;: Silverlight will deliver a rich set of controls that make building Rich Internet Applications much easier.&amp;nbsp; The next Silverlight preview release will add support for core form controls (textbox, checkbox, radiobutton, etc), built-in layout management controls (StackPanel, Grid, etc), common functionality controls (TabControl, Slider, ScrollViewer, ProgressBar, etc) and data manipulation controls (DataGrid, etc).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;u&gt;Rich Networking Support&lt;/u&gt;: Silverlight will deliver rich networking support.&amp;nbsp; The next Silverlight preview release will add support for REST, POX, RSS, and WS* communication.&amp;nbsp; It will also add support for cross domain network access (so that Silverlight clients can access resources and data from any trusted source on the web).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;u&gt;Rich Base Class Library Support&lt;/u&gt;: Silverlight will include a rich .NET base class library of functionality (collections, IO, generics, threading, globalization, XML, local storage, etc).&amp;nbsp; The next Silverlight preview release will also add built-in support for LINQ to XML and richer HTML DOM API integration.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:92f20819-1e50-4512-85ad-850e34a9c4e3" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=442062" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Mobile development</title><link>http://bloggingabout.net/blogs/dennis/archive/2007/10/24/mobile-development.aspx</link><pubDate>Wed, 24 Oct 2007 10:13:20 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:407888</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=407888</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=407888</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2007/10/24/mobile-development.aspx#comments</comments><description>&lt;p&gt;Two weeks ago Mike Schroepfer, a Mozilla developer, &lt;a href="http://weblogs.mozillazine.org/schrep/archives/2007/10/mozilla_and_mobile.html"&gt;announced&lt;/a&gt; that they&amp;#39;ll launch a version of Firefox that can be run mobile devices. If you own a Windows Mobile device, you&amp;#39;re probably craving for a better browsing experience, just like I am. I&amp;#39;ve seen Deepfish, a new browser by Microsoft, but it&amp;#39;s in early betas.&lt;/p&gt; &lt;p&gt;The interesting part however is that, according to Mike Schroepfer, mobile devices currently outsell computers 20 to 1. I remember Microsoft saying in some article or at some conference that by 2010 a total of 1 billion people will be accessing the internet using mobile devices. These numbers hopefully make you consider if the mobile market is worth investing in, especially being a developer.&lt;/p&gt; &lt;p&gt;At Class-A we&amp;#39;re busy with our own &lt;a href="http://www.class-a.nl/index.aspx?id=12&amp;amp;catID=12&amp;amp;sid=20"&gt;mobile development training&lt;/a&gt;. We&amp;#39;re not using standard Microsoft (MOC) material, but creating our own, so we can incorporate best practices and use .NET Compact Framework 3.5, which Microsoft probably won&amp;#39;t have material for, for a long time. This features LINQ and WCF which are great enhancements. I&amp;#39;ve just blogged about the .NETCF 2.0 application I&amp;#39;ve been building, and the next step is to build it again in .NETCF 3.5.&lt;/p&gt; &lt;p&gt;If you experience the Compact Framework for the first time, it might be a though start. But once you get it, it&amp;#39;s a really fun experience building on an entirely different platform. It&amp;#39;s not the C# that&amp;#39;s difficult, it&amp;#39;s the new challenges like the user interface, different screen resolutions, connections and synchronizing data between your device and the server, performance considerations that are completely different from the full .NET Framework, etc. But when you put some time in it, it&amp;#39;s really rewarding to see your application running on a mobile device and having other people enthusiastic about it.&lt;/p&gt; &lt;p&gt;Although LINQ is the &amp;#39;expected&amp;#39; next evolution in programming, I think people can&amp;#39;t even start to wonder what will happen in the mobile world. How it will advance on both hardware and software. Will we keep small screens or walk around with large &lt;a href="http://en.wikipedia.org/wiki/Ultra-Mobile_PC"&gt;origami&lt;/a&gt; like pc&amp;#39;s? What will be possible on your mobile, especially with Silverlight mobile on the way.&lt;/p&gt; &lt;p&gt;The mobile platform is sure something that has my attention and I hope more people will join me. Together we can create a great future.&lt;br /&gt;&lt;font color="#808080"&gt;Wow, does that sound like a dull marketing line! ;-)&lt;/font&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d5edcc14-2d20-4887-8bb0-3d6edd0ff38e" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows%20Mobile" rel="tag"&gt;Windows Mobile&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Compact%20Framework" rel="tag"&gt;Compact Framework&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=407888" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Development/default.aspx">Development</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/WCF/default.aspx">WCF</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/.NET+Compact+Framework+3.5/default.aspx">.NET Compact Framework 3.5</category></item><item><title>Class-A Summer Classes become Winter Classes</title><link>http://bloggingabout.net/blogs/dennis/archive/2007/10/04/class-a-summer-classes-become-winter-classes.aspx</link><pubDate>Thu, 04 Oct 2007 07:08:16 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:384974</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=384974</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=384974</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2007/10/04/class-a-summer-classes-become-winter-classes.aspx#comments</comments><description>&lt;p&gt;As I really enjoyed giving the &lt;a href="http://www.class-a.nl/index.aspx?id=82"&gt;Summer Classes&lt;/a&gt; a few weeks ago, the first ever real .NET 3.5 class world wide, I&amp;#39;m really pleased to announce the Winter Classes. Although the date hasn&amp;#39;t even been set, we&amp;#39;re planning it around the end of January or start of February. The classes will be the same as last time&lt;/p&gt; &lt;ul&gt; &lt;li&gt;.NET 3.5 Summer Class&lt;/li&gt; &lt;li&gt;Business Intelligence Summer Class&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The location to be will again be the &lt;a href="http://www.badhotel.com/nl/home.htm"&gt;Badhotel Domburg&lt;/a&gt;. We really enjoyed it there last time with great facilities and a great bar to hang out and reflect on the things learned that day.&lt;/p&gt; &lt;p&gt;We&amp;#39;ll redo the subjects from the last time, but update everything for the then expected to be released .NET Framework 3.5, with perhaps some new stuff that&amp;#39;ll be released by then. Subjects we covered in our .NET 3.5 class last time are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Language enhancements in C# 3.0 and VB 9.0&lt;/li&gt; &lt;li&gt;Visual Studio 2008 enhancements&lt;/li&gt; &lt;li&gt;ASP.NET AJAX extensions&lt;/li&gt; &lt;li&gt;LINQ and LINQ to XML&lt;/li&gt; &lt;li&gt;LINQ to SQL&lt;/li&gt; &lt;li&gt;Where does LINQ (and LINQ to SQL) fit in my architecture?&lt;/li&gt; &lt;li&gt;WCF and WF integration&lt;/li&gt; &lt;li&gt;Programming the web with WCF v2&lt;/li&gt; &lt;li&gt;.NET Compact Framework 3.5&lt;/li&gt; &lt;li&gt;Silverlight&lt;/li&gt; &lt;li&gt;Entity Framework&lt;/li&gt; &lt;li&gt;What else is new in .NET 3.5 (for everything we didn&amp;#39;t cover yet)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This means a complete coverage of &lt;u&gt;everything new in .NET Framework 3.5&lt;/u&gt;. So when you&amp;#39;ve visited our class, you&amp;#39;ll know everything there is to know in a weeks time! And of course with the Class-A labs that make you think about the solution, instead of bothering you with setting colors on buttons and div&amp;#39;s! ;-)&lt;/p&gt; &lt;p&gt;We&amp;#39;ll also have enough discussion about everything new and you can ask questions just about anything. We&amp;#39;ll also prepare a few games so we can have some fun if you enjoy this!&lt;/p&gt; &lt;p&gt;For the Business Intelligence class and more info about the .NET 3.5 class you can &lt;a href="http://www.class-a.nl/index.aspx?id=12&amp;amp;catID=16&amp;amp;sid=22"&gt;visit the Class-A website&lt;/a&gt;. It&amp;#39;s currently not updated yet for the Winter Class, but it soon will be.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:25a8750c-0a70-43c6-a551-6d8fe8a0d89e" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET%20Framework%203.5" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET%20Compact%20Framework%203.5" rel="tag"&gt;.NET Compact Framework 3.5&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Mobile%20Development" rel="tag"&gt;Mobile Development&lt;/a&gt;, &lt;a href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://technorati.com/tags/LINQ%20to%20SQL" rel="tag"&gt;LINQ to SQL&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=384974" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/WCF/default.aspx">WCF</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/.NET+Compact+Framework+3.5/default.aspx">.NET Compact Framework 3.5</category></item><item><title>.NET 3.5 Summer Class was... awesome!</title><link>http://bloggingabout.net/blogs/dennis/archive/2007/09/17/net-3-5-summer-class-was-awesome.aspx</link><pubDate>Mon, 17 Sep 2007 14:07:21 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:364407</guid><dc:creator>Dennis van der Stelt</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/rsscomments.aspx?PostID=364407</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/dennis/commentapi.aspx?PostID=364407</wfw:comment><comments>http://bloggingabout.net/blogs/dennis/archive/2007/09/17/net-3-5-summer-class-was-awesome.aspx#comments</comments><description>&lt;p&gt;The weekend-after has passed and I&amp;#39;ve slept through most of it. Man did we use up some hours (some nights we went on with the training until 23:00 hours) and especially the last night when we drank past the bar its closing hours and went on in a local pub in Domburg!&lt;/p&gt; &lt;p&gt;But of course it wasn&amp;#39;t about partying, but about .NET 3.5. And I really think we discussed everything there is in .NET 3.5 and even more. On the last day, we discussed Silverlight and the Entity Framework even.&lt;/p&gt; &lt;p&gt;The evaluations were great, with most of them replying that it was so much. But as expected, still one step ahead. Both students and us still need to think about how we are going to write our software in the future, especially when you start to realize that LINQ and the other new features is so much more then just querying a database.&lt;/p&gt; &lt;p&gt;Thing is, we at Class-A had a great time organizing it, preparing for it and finally presenting it. I know the students had a great time and I really hope they get the opportunity to use .NET 3.5 in their daily lives.&lt;/p&gt; &lt;p&gt;This week it&amp;#39;s up to Mike, Anko and Astrid and their Business Intelligence Summer Class, going through everything that&amp;#39;s SQL Server and accompanying products.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=364407" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://bloggingabout.net/blogs/dennis/archive/tags/.NET+Framework+3.5/default.aspx">.NET Framework 3.5</category></item></channel></rss>