[WPF/XAML] kForum RSS Viewer

Hey everyone,
I was playing around with Expression Blend earlier today, and created a simple RSS viewer that takes the kForum RSS feed and allows selection/display of content:

The nice thing about this application is that no C# code was written - just data binding in XAML. If you are on Vista/XP, you can run this application on your comp by clicking here.

Here is the XAML code:

<Window
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xml:lang="en-US"
 x:Class="kForumRSS.Window1"
 x:Name="Window"
 Title="kForum RSS Browser"
 Width="560" Height="269" Opacity="1" Icon="rss.png" WindowStyle="SingleBorderWindow" xmlns:d="http://schemas.microsoft.com/expression/blend/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" ResizeMode="NoResize" ShowInTaskbar="False">
 <Window.Resources>
  <XmlDataProvider d:IsDataSource="True" Source="http://www.kirupa.com/forum/external.php?type=rss2" x:Key="kF">
   <XmlDataProvider.XmlNamespaceManager>
    <XmlNamespaceMappingCollection>
     <XmlNamespaceMapping Prefix="content" Uri="<A href="http://purl.org/rss/1.0/modules/content/"/">http://purl.org/rss/1.0/modules/content/"/>
     <XmlNamespaceMapping Prefix="dc" Uri="<A href="http://purl.org/dc/elements/1.1/"/">http://purl.org/dc/elements/1.1/"/>
    </XmlNamespaceMappingCollection>
   </XmlDataProvider.XmlNamespaceManager>
  </XmlDataProvider>
  <DataTemplate x:Key="titleTemplate">
   <TextBlock Text="{Binding Mode=OneWay, XPath=.}"/>
  </DataTemplate>
  <DataTemplate x:Key="itemTemplate">
   <StackPanel>
    <TextBlock Height="18.96" FontWeight="Bold" Foreground="#FF000000" Text="{Binding Mode=OneWay, XPath=title}"/>
   </StackPanel>
  </DataTemplate>
  <DataTemplate x:Key="descriptionTemplate">
   <TextBox Text="{Binding Mode=OneWay, XPath=.}" TextWrapping="Wrap"/>
  </DataTemplate>
  <ControlTemplate TargetType="{x:Type ScrollViewer}" x:Key="ScrollViewerControlTemplate1">
   <Grid x:Name="Grid" Background="{TemplateBinding Background}">
    <Grid.ColumnDefinitions>
     <ColumnDefinition Width="*"/>
     <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
     <RowDefinition Height="*"/>
     <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Rectangle Fill="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" x:Name="Corner" Grid.Column="1" Grid.Row="1"/>
    <ScrollContentPresenter Margin="0,0,8,0" x:Name="PART_ScrollContentPresenter" Grid.Column="0" Grid.Row="0" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" CanContentScroll="{TemplateBinding CanContentScroll}"/>
    <ScrollBar Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Cursor="Arrow" x:Name="PART_VerticalScrollBar" Grid.Column="1" Grid.Row="0" ViewportSize="{TemplateBinding ViewportHeight}" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Value="{Binding Path=VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent, AncestorType={x:Null}}}" AutomationProperties.AutomationId="VerticalScrollBar"/>
    <ScrollBar Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Cursor="Arrow" x:Name="PART_HorizontalScrollBar" Grid.Column="0" Grid.Row="1" Orientation="Horizontal" ViewportSize="{TemplateBinding ViewportWidth}" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Value="{Binding Path=HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent, AncestorType={x:Null}}}" AutomationProperties.AutomationId="HorizontalScrollBar"/>
   </Grid>
  </ControlTemplate>
  <LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" EndPoint="1,0.5" StartPoint="0,0.5">
   <GradientStop Color="#FFBFF359" Offset="0"/>
   <GradientStop Color="#FFFFFFFF" Offset="1"/>
  </LinearGradientBrush>
 </Window.Resources>
 <Window.Background>
  <LinearGradientBrush EndPoint="0.794,0.98" StartPoint="0.206,0.02">
   <GradientStop Color="#FFC8D0F4" Offset="0"/>
   <GradientStop Color="#FF87B9EA" Offset="1"/>
  </LinearGradientBrush>
 </Window.Background>
 <Grid x:Name="LayoutRoot">
  <Grid.RowDefinitions>
   <RowDefinition Height="*"/>
  </Grid.RowDefinitions>
  <Canvas Margin="8,8,-2,1">
   <Rectangle Fill="#FFFFFFFF" Stroke="{x:Null}" RadiusX="8.5" RadiusY="8.5" HorizontalAlignment="Stretch" Margin="0,0,0,0" Width="188" Height="226"/>
   <Rectangle Fill="#FFFFFFFF" Stroke="{x:Null}" RadiusX="8.5" RadiusY="8.5" Margin="0,0,0,0" Width="336" Height="226" Canvas.Left="202"/>
  </Canvas>
  <Grid DataContext="{Binding Mode=Default, Source={StaticResource kF}, XPath=/rss/channel/item}" Margin="0,0,-2,1" x:Name="feedGrid">
   <ListBox HorizontalAlignment="Left" Margin="19,38,0,17" x:Name="feedListBox" ItemTemplate="{DynamicResource itemTemplate}" IsSynchronizedWithCurrentItem="True" SelectedIndex="0" d:LayoutOverrides="VerticalAlignment" Width="168" ItemsSource="{Binding Mode=OneWay}"/>
   <TextBox Margin="242,11,20,0" x:Name="txtTitle" VerticalAlignment="Top" BorderBrush="{x:Null}" FontSize="16" FontWeight="Bold" Text="{Binding Mode=OneWay, XPath=title}" TextWrapping="NoWrap">
    <TextBox.Foreground>
     <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
      <GradientStop Color="#FF4A9934" Offset="0.635"/>
      <GradientStop Color="#FF5BC73D" Offset="1"/>
     </LinearGradientBrush>
    </TextBox.Foreground>
   </TextBox>
   <ScrollViewer Margin="241,43.28,20,17" Content="{Binding Mode=Default, XPath=description}" ContentTemplate="{DynamicResource descriptionTemplate}"/>
   <Image HorizontalAlignment="Left" Margin="20,16,0,0" VerticalAlignment="Top" Width="16" Height="16" Source="feed.png" Stretch="Fill"/>
   <TextBox HorizontalAlignment="Left" Margin="39,11,0,0" VerticalAlignment="Top" Width="148" Height="23" BorderBrush="{x:Null}" FontSize="14" FontWeight="Bold" Foreground="#FFFF5900" Text="kForum Updates" TextWrapping="Wrap"/>
   <Image HorizontalAlignment="Left" Margin="222,18,0,0" VerticalAlignment="Top" Width="16" Height="16" Source="page_white_go.png" Stretch="Fill"/>
  </Grid>
 </Grid>
</Window>

Cheers!
Kirupa :cap: