<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Silverlight &#124; WPF &#124; Microsoft.Net &#187; ControlTemplate</title>
	<atom:link href="http://joel.neubeck.net/tag/controltemplate/feed/" rel="self" type="application/rss+xml" />
	<link>http://joel.neubeck.net</link>
	<description>Simplifing structure without changing results</description>
	<lastBuildDate>Fri, 01 Apr 2011 21:34:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>RatingControl with Theme support</title>
		<link>http://joel.neubeck.net/2008/11/ratingcontrol-theme/</link>
		<comments>http://joel.neubeck.net/2008/11/ratingcontrol-theme/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 06:37:18 +0000</pubDate>
		<dc:creator>joel</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[ControlTemplate]]></category>
		<category><![CDATA[ImplicitStyleManager]]></category>
		<category><![CDATA[Rating Control]]></category>
		<category><![CDATA[Theming]]></category>

		<guid isPermaLink="false">http://joel.neubeck.net/?p=302</guid>
		<description><![CDATA[This past Wednesday I was asked to present at the Phoenix Silverlight users group on the topic of writing custom controls. Back a few months ago I created a very simple version of a Silverlight Rating control and thought it would be a great example to demonstrate how to leverage Control Templates, Visual State manager [...]]]></description>
			<content:encoded><![CDATA[<p>This past Wednesday I was asked to present at the Phoenix Silverlight users group on the topic of writing custom controls.  Back a few months ago I created a very simple version of a Silverlight Rating control and thought it would be a great example to demonstrate how to leverage Control Templates, Visual State manager and styling.  Back when I created the control I choose to use &#8220;/themes/generic.xaml&#8221; as a way to provide the default styling of my control.  This works great if a developer wants to tweek the layout of the control before using it in there project, but was never intended to skin the control at runtime.</p>
<p>A few weeks back around PDC, Microsoft released the <a href="http://www.codeplex.com/Silverlight">Silverlight Toolkit</a> a collection of Silverlight controls developers and designers can use in there Silverlight projects.  What is really cool about the way in which Shawn Burke&#8217;s team is working on control development, is this idea of releasing controls on Codeplex to get them quickly into the community.</p>
<p>If you play around with the toolkit you will quickly stumble on a new assembly called: &#8220;Microsoft.Windows.Controls.Theming&#8221;.  In a nut shell what this class does is give control developers access to the ability to theme their controls.  One of the key elements of this assembly is the &#8220;ImplicitStyleManager&#8221;.  This class exposes some attached properties that allow designers to specify an external resource file (.xaml) containing styles which can be applied to a control and each of the controls children.</p>
<p>Here is what i did to get my RatingControl to use the implicit style manager.  First I added a reference in my page.xaml to the Theming namespace.</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">xmlns:theming=&quot;clr-namespace:
Microsoft.Windows.Controls.Theming;
assembly=Microsoft.Windows.Controls.Theming&quot;</pre></div></div>

<p>Next I inserted a a few attributes into my rating control declaration to specify the location of my theme and how I wanted my theme applied.  I choose &#8220;Auto&#8221; which applies the theme immediately when the control is loaded.<br />
<a href="http://joel.neubeck.net/wp-content/uploads/2008/11/implicitstyle.png"><img class="alignleft size-full wp-image-303" title="implicitstyle" src="http://joel.neubeck.net/wp-content/uploads/2008/11/implicitstyle.png" alt="" width="500" height="89" /></a><br style="clear:both"/><br />
Lastly I copied my generic.xaml file into a new themes directory located in my test Silverlight project and renamed it to &#8220;themeA.xaml&#8221;.  Just to prove that the theme was loading I changed my RatingButton style to display an ellipse instead of the default star&#8217;s I had used in my original example.  Below is how it all turned out.</p>
<p><iframe src="/wp-content/uploads/2008/11/Rating/default.html" frameborder="0" width="300" height="300"></iframe>  </p>
<p>Code: <a onclick="javascript: pageTracker._trackPageview('/code/Rating2.zip');" href="/wp-content/uploads/2008/11/Rating/Rating.zip">Rating.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joel.neubeck.net/2008/11/ratingcontrol-theme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Templated Silverlight Rating Control</title>
		<link>http://joel.neubeck.net/2008/09/templated-silverlight-rating-control/</link>
		<comments>http://joel.neubeck.net/2008/09/templated-silverlight-rating-control/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 21:36:26 +0000</pubDate>
		<dc:creator>joel</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[ContentControl]]></category>
		<category><![CDATA[ControlTemplate]]></category>
		<category><![CDATA[Rating Control]]></category>
		<category><![CDATA[Template Binding]]></category>
		<category><![CDATA[Visual State Manager]]></category>

		<guid isPermaLink="false">http://joel.neubeck.net/2008/09/templated-silverlight-rating-control/</guid>
		<description><![CDATA[Anyone that has been working with the standard set of controls for Silverlight 2 Beta 2 has been exposed to the concept of template binding and how VisualStateManager (VSM) controls state.&#160;&#160; In this example I will build a templated control&#160; to learn how to use VSM, template binding and the ContentControl base class.&#160; The control [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone that has been working with the standard set of controls for Silverlight 2 Beta 2 has been exposed to the concept of template binding and how VisualStateManager (VSM) controls state.&#160;&#160; In this example I will build a templated control&#160; to learn how to use VSM, template binding and the ContentControl base class.&#160; </p>
<p>The control I choose to create is a Rating control .&#160; The goal is to display a series of Stars that both visualize an overall average score, and allows a user to submit their own rating.&#160; Here is what the control looks like.</p>
<p> <iframe src="/wp-content/uploads/2008/09/Rating/default.html" frameborder="0" width="300" height="200"></iframe>  <br /> <br />
<h2>RatingControl</h2>
<p>The control is comprised of two components: RatingControl and RatingButton. The RatingControl is derived from ContentControl and can either be given an explicit set of RatingButtons, or can automatically create them based on a user setting. Here are the properties I have chosen to expose in RatingContorl:</p>
<ul>
<li>Max (Int): The number of RatingButtons to display </li>
<li>Total (double): The number of votes that have been cast </li>
<li>Score (double): The average rating across all&#160; submissions </li>
<li>UseIndicators(bool): Determines if we will display indicators for what each star represents. </li>
</ul>
<p>There are two ways in which you can populate the rating control.&#160; The first is to set the Max property and allow the control to add the appropriate number of children.&#160; This works great if you don’t need to specify an individual Indicator (ToolTip) for each RatingButton.&#160; The second approach is to explicitly add RatingButtons to the content property of the RatingControl.&#160; Here is what that would look like in Xaml.</p>
<p> <a href="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-1.png"><img title="rating_1" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="143" alt="rating_1" src="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-1-thumb.png" width="450" align="left" border="0" /></a>   <br style="clear: both" />
<p>By choosing to have our RatingControl inherent from ContentControl it takes care of giving us the ability to set the children of our Content property.&#160; In this example I am assuming a FrameworkElement derived from Panel (Grid or StackPanel) is placed inside of Content.&#160; This makes it very easy to iterate through the panels children and identify each RatingButton.&#160; The following shows the code I used to make the decisions if I would create my own RatingButtons, or use those specified in the RatingControl.Content element.</p>
<p><a href="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-2.png"><img title="rating_2" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="335" alt="rating_2" src="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-2-thumb.png" width="450" align="left" border="0" /></a> </p>
<p>  <br style="clear: both" />
<p>Since I was allowing this control to be templated, I choose to do this setup in the controls Loaded event handler.&#160; This allows me to set the controls Content property equal to my manually created StackPanel, prior to the controls ApplyTemplate method being executed.&#160; This ensures that any special formatting around the panel is applied after the RatingButtons have been added.</p>
<h2>RatingButton</h2>
<p>To minimize the amount of code I needed to write for this control I decided to build my RatingButton control on top of the System.Windows.Controls.Primitives.ToggleButton.&#160; If you are not familiar with this control it is a very flexible Button that supports three states (Checked, Uncheked, Null).&#160; This is perfect for my example where I will need my star to be visualizes as either filled, empty or half filled star. </p>
<p>For all extensive purposes I left the ToggleButton alone and only overrode OnToggle, OnMouseEnter and OnMouseDown.&#160; Here is what that code looks like.</p>
<p><a href="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-3.png"><img title="rating_3" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="364" alt="rating_3" src="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-3-thumb.png" width="450" align="left" border="0" /></a> </p>
<p>  <br style="clear: both" />
<p>Since each RatingButton needs to behave as a group, I had to circumvent how the ToggleButton would change visual state, and allow RatingControl to manage this process.&#160; The first method UpdateChecked, simply iterates over each rating button, and based on the Score, determines which ones would be checked.&#160; For my visualization I decide that an average score &gt; N.3, but &lt; N.7 would visualize a half star, where as anything above or below would visualize a full or empty star.&#160; I allow the IsChecked property of ToggleButton to switch to the appropriate visual state (Checked, UnChecked or Intermediate).</p>
<p>In the event that a user is hovering over the rating control, I want to visualize a different color of filled star.&#160; Once again I need to allow the RatingControl to determine which RatingButtons need to react to the hover.&#160; The following demonstrates how I achieved this effect. </p>
<p><a href="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-4.png"><img title="rating_4" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="317" alt="rating_4" src="http://joel.neubeck.net/wp-content/uploads/2008/09/rating-4-thumb.png" width="450" align="left" border="0" /></a> </p>
<p>  <br style="clear: both" />
<p>Since once again we choose to circumvent how the ToggleButton switches state on hover, we must&#160; use VisualStateManger.GotToState to trigger the appropriate state of the RatingButton we are evaluating (MouseOver or Normal).&#160;&#160; </p>
<p>To&#160; customize the visualization of the this control you can either edit my default style in Blend 2.5, or you can clone it and make your own changes. The Control template is as simple as I could make it to allow users full control over how the RatingButton icons look, and how the states are visualized.&#160; </p>
<p>Code: <a onclick="javascript: pageTracker._trackPageview('/code/Rating.zip');" href="/wp-content/uploads/2008/09/Rating/Rating.zip">Rating.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joel.neubeck.net/2008/09/templated-silverlight-rating-control/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Silverlight how-to: Video Player</title>
		<link>http://joel.neubeck.net/2008/04/silverlight2-how-to-video-player/</link>
		<comments>http://joel.neubeck.net/2008/04/silverlight2-how-to-video-player/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 17:48:44 +0000</pubDate>
		<dc:creator>joel</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[ControlTemplate]]></category>
		<category><![CDATA[MediaElement]]></category>
		<category><![CDATA[Slider]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[ToggleButton]]></category>
		<category><![CDATA[Video Player]]></category>
		<category><![CDATA[Xaml]]></category>

		<guid isPermaLink="false">http://joel.neubeck.net/?p=129</guid>
		<description><![CDATA[Please note: This sample was made into a Code Plex project and is maintained there. Please download all source from http://www.codeplex.com/sl2videoplayer/ In my ongoing quest to work with Silverlight 2 I embarked on building my own video player using the standard MediaElement and a few of the new System Controls (ToggleButon, Slider and Button). My [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Please note</strong>: This sample was made into a Code Plex project and is maintained there.  Please download all source from <a href="http://www.codeplex.com/sl2videoplayer/">http://www.codeplex.com/sl2videoplayer/</a></p></blockquote>
<p>In my ongoing quest to work with Silverlight 2 I embarked on building my own video player using the standard MediaElement and a few of the new System Controls (ToggleButon, Slider and Button). My goal was to build a video player using no custom user controls, but instead leveraging controls styles and templates.&#160; Here is the Video Player I ended up developing.</p>
<p><iframe src="/wp-content/uploads/2008/04/VideoPlayer/default.html" width="480" height="360"></iframe></p>
<p>As you can see from my example, I was able to get a pretty clean look and feel with minimal artistic skills required.&#160;&#160; The way my player is constructed, I have opted to encapsulate the controls for playing video into its own UserControl.&#160; This allowed me to have a single place responsible for managing playback while allowing the main xaml page to control how the MediaElement is presented.&#160; To give the controller access to a specific MediaElement, I pass it to my controller via a public property.</p>
<p>Most of the customization techniques I used are pretty well documented on MSDN.&#160; Nonetheless, mastering controls styles was definitely a challenge. For those unfamiliar with control styles, here is an example of the xaml I used to &quot;skin&quot; my mute button.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">x:key</span>=<span style="color: #ff0000;">&quot;speakerStyle&quot;</span> <span style="color: #000066;">targettype</span>=<span style="color: #ff0000;">&quot;Button&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter</span> <span style="color: #000066;">property</span>=<span style="color: #ff0000;">&quot;Template&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;setter.value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;controltemplate</span> <span style="color: #000066;">targettype</span>=<span style="color: #ff0000;">&quot;Button&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;grid</span> <span style="color: #000066;">x:name</span>=<span style="color: #ff0000;">&quot;RootElement&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;path</span> <span style="color: #000066;">stretch</span>=<span style="color: #ff0000;">&quot;Fill&quot;</span> <span style="color: #000066;">fill</span>=<span style="color: #ff0000;">&quot;#FFFFFFFF&quot;</span> <span style="color: #000066;">data</span>=<span style="color: #ff0000;">&quot;F1 M 23.1457,</span>
<span style="color: #009900;">            26.5056L 23.1457,33.8944l 25.7913,33.8944l 28.8235,37.4722l </span>
<span style="color: #009900;">            30.5346,37.4722l 30.5665,23.0833l 28.8995,23.0833l 25.8679,</span>
<span style="color: #009900;">            26.5056l 23.1457,26.5056 z &quot;</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;7.42080116271973&quot;</span> </span>
<span style="color: #009900;">            <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;14.3889999389648&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/controltemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter.value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/setter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>This is about as simple a skin as one can get. If I were doing this for a real client I would have certainly choose to give my button multiple states (MouseOver, Down, ect) In Silverlight 2 control states are achieved by including specific named Storyboards in your ControlTemplate resource dictionary. Each control provides a different set of pre defined states. Here is a list of the states available for a ToggleButton.</p>
<ul>
<li><strong>Checked State</strong> &#8211; The normal checked state of the control. </li>
<li><strong>Indeterminate State</strong> &#8211; The normal indeterminate state of the control. </li>
<li><strong>Normal State</strong> &#8211; The normal unchecked state of the control. </li>
<li><strong>MouseOver Checked State</strong> &#8211; The state that is triggered when the mouse pointer is positioned over the checked control. </li>
<li><strong>MouseOver Indeterminate State</strong> &#8211; The state that is triggered when the mouse pointer is positioned over the indeterminate control. </li>
<li><strong>MouseOver Unchecked State</strong> &#8211; The state that is triggered when the mouse pointer is positioned over the unchecked control. </li>
<li><strong>Pressed Checked State</strong> &#8211; The state that is triggered when the checked control is pressed. </li>
<li><strong>Pressed Indeterminate State</strong> &#8211; The state that is triggered when the indeterminate control is pressed. </li>
<li><strong>Pressed Unchecked State</strong> &#8211; The state that is triggered when the unchecked control is pressed. </li>
<li><strong>Disabled Checked State</strong> &#8211; The state that is triggered when the checked control is disabled. </li>
<li><strong>Disabled Indeterminate State</strong> &#8211; The state that is triggered when the indeterminate control is disabled. </li>
<li><strong>Disabled Unchecked State</strong> &#8211; The state that is triggered when the unchecked control is disabled. </li>
</ul>
<p>In my example I use the ToggleButton to control playback of the video.&#160; Instead of creating two buttons, one for play and one for pause, I&#160; choose to use a ToggleButton to combine them into one.&#160; I display a play symbol when the video is stopped or paused, and a pause symbol when the video is playing.&#160; The ToggleButton functions just like a checkbox, clicking it once &quot;check&#8217;s&quot; it while clicking it again &quot;uncheck&#8217;s&quot; it.&#160;&#160; The following&#160; is a sample of one of the Storyboards I used in skinning my ToggleButton. This animation controls which elements are visualized when a users presses the ToggleButton in an previously checked state.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;storyboard</span> <span style="color: #000066;">x:key</span>=<span style="color: #ff0000;">&quot;Pressed Checked State&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimation</span> <span style="color: #000066;">duration</span>=<span style="color: #ff0000;">&quot;0:0:0.1&quot;</span> </span>
<span style="color: #009900;">     <span style="color: #000066;">storyboard.targetname</span>=<span style="color: #ff0000;">&quot;playSymbol&quot;</span> </span>
<span style="color: #009900;">     <span style="color: #000066;">storyboard.targetproperty</span>=<span style="color: #ff0000;">&quot;Opacity&quot;</span> <span style="color: #000066;">to</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimation</span> <span style="color: #000066;">duration</span>=<span style="color: #ff0000;">&quot;0:0:0.1&quot;</span> </span>
<span style="color: #009900;">     <span style="color: #000066;">storyboard.targetname</span>=<span style="color: #ff0000;">&quot;pauseSymbol&quot;</span> </span>
<span style="color: #009900;">     <span style="color: #000066;">storyboard.targetproperty</span>=<span style="color: #ff0000;">&quot;Opacity&quot;</span> <span style="color: #000066;">to</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doubleanimation</span> <span style="color: #000066;">duration</span>=<span style="color: #ff0000;">&quot;0:0:0.1&quot;</span> </span>
<span style="color: #009900;">    <span style="color: #000066;">storyboard.targetname</span>=<span style="color: #ff0000;">&quot;buttonPressed&quot;</span> </span>
<span style="color: #009900;">    <span style="color: #000066;">storyboard.targetproperty</span>=<span style="color: #ff0000;">&quot;Opacity&quot;</span> <span style="color: #000066;">to</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/storyboard<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>In the code above, I am ensuring that the play symbol is hidden while I show both a pause symbol and an glow image used to show the button is being pressed.</p>
<p>As for procedural code, all of the heavy lifting is done in the mediaControl.xaml.cs codebehind file.&#160; The majority of code is event handlers responding to user interactions (clicks, drags,etc) or a single DispatcherTimer monitoring progress in the video playback.&#160; My&#160; DispatcherTimer fires a tick every 50 milliseconds which update how much time has played and visualizes on a slider how much time remains.</p>
<p>Code: <a onclick="javascript: pageTracker._trackPageview(&#39;/code/VideoPlayer.zip&#39;);" href="http://www.codeplex.com/sl2videoplayer">Code Plex</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joel.neubeck.net/2008/04/silverlight2-how-to-video-player/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

