As of this morning, downloads are published for the Silverlight 3 Runtime, SDK, Tools and Blend.
Blend
Silverlight 3 Runtime
Silverlight 3 Tools for Visual Studio 2008 SP1
SDK
Looking forward to exploring the new features and changes.
As of this morning, downloads are published for the Silverlight 3 Runtime, SDK, Tools and Blend.
Blend
Silverlight 3 Runtime
Silverlight 3 Tools for Visual Studio 2008 SP1
SDK
Looking forward to exploring the new features and changes.
I was recently asked by a customer, “Why doesn’t RadioButton.GroupName work when a single RadioButton is put in a DataTemplate within an ItemsControl?” I had no answer. When I tried it out myself, lo and behold, two checked RadioButtons were staring back at me. A quick search told me that others have encountered this issue, and none had found a solution based in markup.
To illustrate the mechanics of Attached Behaviors, a topic that I had been reviewing with my customer, I decided to implement a working RadioButtonGroup as one. Simply use the attached property in place of RadioButton.GroupName, and the behavior takes care of the rest.
<ItemsControl ItemsSource="{Binding DataCollection}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <RadioButton Content="{Binding Name}" b:RadioButtonGroup.Name="1"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
One interesting detail about my implementation: It can be used with ToggleButtons to achieve RadioButton-like behavior.

The solution source is available here. Feedback welcome.
Side note: Using reflector, I noticed that although RadioButton has all the necessary plumbing to group arbitrary radio buttons (and that code is remarkably similar to how a standard attachedbehavior is implemented), it relied on the “Logical Tree”, FrameworkElement.Parent, to scope group names to a common root node. One side effect of using ItemsControl is that the ContentPresenters used to show an item’s DataTemplate are severed from their parents. Parent is always null. This attached behavior doesn’t use that, and in fact it does not scope the group Names at all, so be sure to choose unique names.
Enjoy!