<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>foo, bar and donkey</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/kirti/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/kirti/feed.xml</link>
    <description>Variable fare</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:24:03 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Me, Myself and My Phone</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/me-myself-and-my-phone</link>
      <pubDate>Mon, 16 Feb 2009 20:16:00 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2009/02/16/me-myself-and-my-phone/</guid>
      <description><![CDATA[I apologize for being so inactive on my blog for the past few months. I switched to the Mobile...]]></description>
      <content:encoded><![CDATA[<P>I apologize for being so inactive on my blog for the past few months. I switched to the Mobile Services division in June to work on a V1 consumer mobile service - My Phone. <A href="https://www.microsoft.com/myphone" mce_href="https://www.microsoft.com/myphone">Microsoft My Phone</A> has had <A href="https://www.engadget.com/tag/myphone" mce_href="https://www.engadget.com/tag/myphone">so much buzz</A> even before it was released. However, I could not blog about it until the formal announcement today at the <A href="https://www.mobileworldcongress.com/" mce_href="https://www.mobileworldcongress.com/">Mobile World Congress</A> today. But now the cat is <EM>officially </EM>out of the bag. </P>
<P>It has been an awesome learning experience working on V1 mobile service targeted for consumers and I hope that it is received well. The team has worked really hard to make this release possible in a very short span of time. Kudos! I hope some of them go out for a beer tonight and take a day off or something. </P>
<P><STRONG>So what is My Phone?</STRONG></P>
<P><A href="https://sn1-p2.myphone.microsoft.com/mkweb//MoreInfo.po?tsid=1234833064133" mce_href="https://sn1-p2.myphone.microsoft.com/mkweb//MoreInfo.po?tsid=1234833064133">Microsoft My Phone</A> synchronizes data on your phone, specifically <STRONG>Contacts, Calendar, Tasks, Pictures, Videos, Music, Documents,</STRONG> <STRONG>SMS</STRONG> (WOW!) and even stuff on your<STRONG> Storage Card</STRONG>, to the cloud. </P>
<P>You can get the latest My Phone news from the <A href="https://myphoneteam.spaces.live.com/" mce_href="https://myphoneteam.spaces.live.com/">My Phone blog</A>. </P>
<P><STRONG>How do I get set up with My Phone?</STRONG></P>
<P>If you have a <A href="https://www.microsoft.com/windowsmobile/en-us/default.mspx" mce_href="https://www.microsoft.com/windowsmobile/en-us/default.mspx">Windows Mobile 6.0 or 6.1 Phone</A> you can try out <A href="https://www.microsoft.com/myphone" mce_href="https://www.microsoft.com/myphone">Microsoft My Phone</A> today with a promotional code. Currently it is an invite-only beta. Please sign up and add yourself to the wait list. You will need a <A href="https://signup.live.com/signup.aspx?ru=https://signup.live.com/finished.aspx&amp;rollrs=12&amp;lic=1" mce_href="https://signup.live.com/signup.aspx?ru=https://signup.live.com/finished.aspx&amp;rollrs=12&amp;lic=1">Windows Live ID</A> (formerly Passport) to sign into the service.</P>
<P><STRONG>What does My Phone do for me?</STRONG></P>
<BLOCKQUOTE>
<P><STRONG>Keeps your data safe</STRONG></P>
<P>If you ever lose your phone or decide you want a new one, My Phone will save you a lot of time by keeping the data intact and allowing you to easily migrate it to a new device. </P>
<P><STRONG>Do more with your data online</STRONG></P>
<P>You can also manage the data from the <A href="https://www.microsoft.com/myphone" mce_href="https://www.microsoft.com/myphone">My Phone website</A> - add new contacts, download pictures and videos you took using your phone to your home PC, push your favorite picture to your phone so that you have it with you on the go, and lots more. </P></BLOCKQUOTE>
<P><STRONG>How can I share my My Phone experience?</STRONG></P>
<P><B></B></P>
<P>If you have tried it out and have bugs to report or any new ideas around improving our service you can do so on our <A href="https://social.microsoft.com/Forums/en-US/MyPhone/threads/" mce_href="https://social.microsoft.com/Forums/en-US/MyPhone/threads/">My Phone forum</A>. </P>
<P>See you there!</P>]]></content:encoded>
    </item>
    <item>
      <title>Using UpdatePanels with ModalPopups</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/using-updatepanels-with-modalpopups</link>
      <pubDate>Thu, 31 Jul 2008 13:19:05 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/07/31/using-updatepanels-with-modalpopups/</guid>
      <description><![CDATA[Moving an old post over from my old Technet blog to this MSDN blog.  One of the most frequently...]]></description>
      <content:encoded><![CDATA[<p mce_keep="true"><em>Moving an old post over from my old Technet blog to this MSDN blog.</em></p>  <p mce_keep="true">One of the most frequently asked questions on the <a class="" title="Toolkit Sample Website" href="https://ajax.asp.net/ajaxtoolkit" mce_href="https://ajax.asp.net/ajaxtoolkit">Toolkit</a> <a class="" title="Toolkit forums" href="https://forums.asp.net/1022/ShowForum.aspx" mce_href="https://forums.asp.net/1022/ShowForum.aspx">forums</a> and at <a class="" title="MIX website" href="https://www.visitmix.com/" mce_href="https://www.visitmix.com">MIX</a> after <a class="" title="Shawn&#39;s demo blog post" href="https://blogs.msdn.com/sburke/archive/2007/05/01/slides-and-demos-for-mix-toolkit-talk.aspx" mce_href="https://blogs.msdn.com/sburke/archive/2007/05/01/slides-and-demos-for-mix-toolkit-talk.aspx">Shawn's demo</a> was how to get <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanels</a> to work right with <a class="" title="Modal Popup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopups</a>. The trick is to understand that the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> extender attaches itself to more than just the TargetControl and PopupControl. If you include the OK and Cancel buttons inside the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> Panel in an <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanel</a>, make sure you include the extender declaration in it as well. If you do not, once a postback occurs the extender will not reinitialize the handlers and you will get null references. Also, if buttons inside the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> Panel are set to be OK and Cancel buttons on the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> Extender, then their sole purpose is to close the Popup Panel and run their respective scripts if any have been set. They will not perform postbacks or execute any other client side handlers since the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> prevents the event from propagating up. </p>  <p mce_keep="true">I have attached a sample page that demonstrates three simple scenarios with ModalPopups and UpdatePanels.</p>  <ol>   <li>     <div mce_keep="true"><a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx"><strong>ModalPopup</strong></a>&#160;<strong>with an </strong><a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx"><strong>UpdatePanel</strong></a><strong> inside its Popup Panel:</strong> Make sure that the OK and Cancel buttons are not inside the <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanel</a> otherwise the handlers will be rendered useless on postback. </div>   </li>    <li>     <div mce_keep="true"><strong><a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx"><strong>UpdatePanel</strong></a> that contains a <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx"><strong>ModalPopup</strong></a> Extender and its Popup Panel: </strong>Clicking OK or Cancel still does not cause the postback since those buttons are tied to client side handlers. Clicking on any other control will cause the server side handlers to kick in. Since the extender declaration is inside the UpdatePanel, the asynchronous postback causes the ModalPopupBehavior to be reinitialized correctly and any client side handlers are setup again when the request is completed. So if you would like to postback every time the user clicks OK or Cancel, just don't set those properties on the extender. The Modal Popup Panel closes on postback as desired since the entire popup is inside an <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanel</a>.</div>   </li>    <li>     <div mce_keep="true"><strong>What if that Popup Panel in # (2) contains an </strong><a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx"><strong>UpdatePanel</strong></a><strong>: </strong>Specify the triggers that will cause the outer panel to update and allow the <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanel</a> inside the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> to operate on its own terms. This time the <a class="" title="ModalPopup sample" href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx" mce_href="https://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx">ModalPopup</a> Panel does not close on postback triggered from within it because the trigger for the outer panel is specifically set to be a separate button.</div>   </li> </ol>  <p mce_keep="true">It is a good idea to design the page without <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanels</a> in mind. When writing the page place <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanels</a> when the rest is done. Once you have the page setup, determine locations in your page that need to be asynchronously updated and the controls that should act as triggers to perform that operation and then appropriately place <a class="" title="Update Panel documentation" href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx" mce_href="https://ajax.asp.net/docs/mref/T_System_Web_UI_UpdatePanel.aspx">UpdatePanels</a> with the correct triggers and UpdateMode property set. With extenders it is important that you take into consideration not just the controls targetted by the extender but any others which it hooks into to provide additional functionality. </p>  <p mce_keep="true">This post should evolve as I get more feedback and I will update the sample accordingly as well. I hope this helps.<font color="#0000ff"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Spinning-in-Control</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/spinning-in-control</link>
      <pubDate>Tue, 27 May 2008 22:54:00 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/05/27/spinning-in-control/</guid>
      <description><![CDATA[In my previous blog post I talked about how easily you could achieve a spinning/rotator...]]></description>
      <content:encoded><![CDATA[<P dir=ltr style="MARGIN-RIGHT: 0px">In my <A href="https://blogs.msdn.com/kirti/archive/2008/05/13/spinning-out-of-control.aspx" mce_href="https://blogs.msdn.com/kirti/archive/2008/05/13/spinning-out-of-control.aspx">previous blog post</A> I talked about how easily you could achieve a spinning/rotator functionality in Silverlight with existing controls. I promised that I would come back with a more reusable solution, so here it goes.</P>
<P dir=ltr style="MARGIN-RIGHT: 0px"><STRONG>A more organized attempt at spinning...</STRONG></P>
<P>One of the biggest issues I ran into, as with designing any generic control, was trying to keep the API simple while adding both basic Numeric Up Down functionality and ability to navigate through custom items. To workaround that in a clean fashion I decided to split the two into two completely different controls and leverage the support of two very distinct features in Silverlight, <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx">RangeBase</A> and <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx">ItemsControl</A>. My team-mate, <A href="https://blogs.msdn.com/delay/" mce_href="https://blogs.msdn.com/delay/">David</A>, suggested that I could use <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.listbox(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.listbox(VS.95).aspx">ListBox</A> instead to use its selection functionality and I would like to try that next. </P>
<P>So here is what I have. </P>
<P><STRONG><U>NumericUpDown</U></STRONG></P>
<P><STRONG>The common features of a Numeric Up Down control...</STRONG></P>
<OL>
<LI>Support for keeping value within a range </LI>
<LI>Interval to increment and decrement values and </LI>
<LI>An initial starting value. </LI></OL>
<P>Since <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx">RangeBase</A> does this by its very design and enforces the range via coercion, I decided to outsource all that responsibility to it and pretty much just added the buttons and the event handlers to do the right thing when the user clicks on the respective controls. Since <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx">RangeBase</A> has two options for intervals, large change and small change, I have allowed for the user to update the value using either of those change intervals. </P>
<P>The anatomy of the NumericUpDown is pretty similar to that of <A href="https://blogs.msdn.com/kirti/archive/2008/03/08/why-don-t-you-slide-r.aspx" mce_href="https://blogs.msdn.com/kirti/archive/2008/03/08/why-don-t-you-slide-r.aspx">the Slider control</A> except that this is missing the track and the thumb and has a TextBox in the template instead. The Text property of the TextBox and the RangeBase Value are maintained in sync.</P>
<P><STRONG>Usage</STRONG></P><FONT face="courier ne" size=1><FONT color=#a31515 size=2><FONT color=#a31515 size=2></FONT></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">NumericSpinner</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> x</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Name</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="NumericRangeBaseSpinner"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> </SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="COLOR: red">Value</SPAN><SPAN style="COLOR: blue">="0"</SPAN><SPAN style="COLOR: red"> LargeChange</SPAN><SPAN style="COLOR: blue">="1"</SPAN><SPAN style="COLOR: red"> Minimum</SPAN><SPAN style="COLOR: blue">="-100"</SPAN><SPAN style="COLOR: red"> Maximum</SPAN><SPAN style="COLOR: blue">="100" /&gt;</SPAN></SPAN></P></FONT></FONT></FONT>
<P>With that usage, here is how the NumericUpDown control looks like with its default template. </P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_2.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_2.png" mce_href="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_2.png"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=50 alt=image src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb.png" width=119 border=0 mce_src="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb.png"></A> </P>
<P><STRONG>Note: </STRONG></P>
<P>I am only using the LargeIncrease buttons in the default template to keep things simple and focused. You could easily add the small increase buttons and convert this into a paging control or a seek control on the MediaElement to change tracks in the MediaElement. Just set the LargeChange to be the Maximum amount and the RangeBase coercion will take care of the rest. Use SmallChange to perform the regular up/down. You can change the layout to add or remove any of these buttons to meet your requirements. It is pretty flexible!</P>
<P><STRONG><U>General Rotator/Spinner</U></STRONG></P>
<P>This control was born out of the need to browse through items in a collection, one at a time. It is very much the like the <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.listbox(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.listbox(VS.95).aspx">ListBox</A> example I used in my previous blog post where I make the viewing area just big enough to accommodate the selected item only. </P>
<P><STRONG>To summarize the features...</STRONG></P>
<OL>
<LI>View an object in an collection. </LI>
<LI>Bind to the collection of objects: 
<UL>
<LI>specified via a DataSource </LI>
<LI>specified inline in XAML </LI></UL></LI>
<LI>Navigate through the items in the collection </LI>
<LI>Provide a DataTemplate that displays the object in a desired way. </LI></OL>
<P>Several scenarios come to mind: Slide Shows, Paging Controls, input choices on a form like months in a year or days of the week, numeric up/down and many more.</P>
<P>To achieve the inline declaration of objects I decided to leverage the built-in feature in <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx">ItemsControl</A> that has the <A href="https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.items(VS.95).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.items(VS.95).aspx">Items property as Content</A>. </P>
<P>What does a Spinner control give you?</P>
<OL>
<LI>Current item displayed using a DataTemplate and backed by a ContentPresenter in the control template. </LI>
<LI>Navigation support for previous and next items using Buttons. </LI>
<LI>Navigation hooks to get to the first and last elements in the collection using Buttons. </LI></OL>
<P><STRONG>TODO: </STRONG>Need to expose the object being currently displayed and I am toying with the idea of basing the third flavor on a <STRONG>ListBox</STRONG> control to use the selection goodness as I mention above.</P>
<P><STRONG><U>Usage:</U></STRONG></P>
<P><STRONG><U>Spinning through the days of the week</U></STRONG></P>
<P>This sample shows how to bind a Spinner to the days of the week and display the day in the format you choose. I chose to start with Thursday as the week to start from by setting the CurrentItemIndex property to be 3. You can hit the last or first buttons to go to Sunday or Monday respectively or use the previous and next buttons to navigate in smaller steps.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> x</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Name</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="MySpinner"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> CurrentItemIndex</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="3"&gt;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner.CurrentItemTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">DataTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Border</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Height</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="27"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> BorderThickness</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="2"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> BorderBrush</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Black"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> CornerRadius</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="2"&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="{</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Binding</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">}"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> HorizontalAlignment</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Center"/&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Border</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">DataTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner.CurrentItemTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Monday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Tuesday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Wednesday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Thursday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Friday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Saturday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Sunday" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;</SPAN></P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_6.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_6.png" mce_href="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_6.png"><IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=47 alt=image src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb_2.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb_2.png" width=244 border=0 mce_src="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb_2.png"></A> </P>
<P><STRONG><U>Spinning through Images: Slide Show!</U></STRONG></P>
<P>In this example, I wanted to display the true power of the CurrentItemTemplate property. I pass the URL paths to the images in my application and bind the Image's Source property in the DataTemplate to that path. All that I need to do then is hit run in Visual Studio. Yes, yes, it does not have the standard SlideShow goodness like auto-play, round-robin etc. but it is a decent start and those hooks could be added externally since the CurrentItemIndex property is exposed for manipulation. In a real world scenario you would set the ItemsSource property to the collection of business objects and let the DataTemplate work the magic.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> x</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Name</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="MyPagingSlideShow"</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner.CurrentItemTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">DataTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Image</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Source</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="{</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Binding</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">}" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">DataTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner.CurrentItemTemplate</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="/Images/Creek.jpg" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="/Images/Dock.jpg" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="/Images/Forest.jpg" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="/Images/Garden.jpg" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="/Images/Tree.jpg" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">TextBlock</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Text</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="/Images/Waterfall.jpg" /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">spin</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">:</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Spinner</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&gt;</SPAN></P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_8.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_8.png" mce_href="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_8.png"><IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=196 alt=image src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb_3.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb_3.png" width=288 border=0 mce_src="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinninginControl_1027C/image_thumb_3.png"></A> </P>
<P><STRONG><FONT color=#ff0000><U>Caveat!</U></FONT></STRONG></P>
<P>David brought this point up and I agree with him. The paradigm of specifying the items inline does not scale too well if you specify a large number of UIElements inline since ItemsControl does not support virtualization. ItemsControl will try to load all those elements when a request for that page is made. So sticking to specifying lightweight business objects like strings and URIs would be the way to go here and let the DataTemplate take care of the presentation.</P>
<P><STRONG></STRONG></P>
<P><STRONG>Wrapping up...</STRONG></P>
<P>That's all I have for now. I do hope these controls serve you well and I would love to hear feedback and feature suggestions on the design, implementation and more so do let me know what you think!</P>
<P>Thanks!</P>
<P>Kirti</P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/08/55/58/27/Spinners.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-08-55-58-27/Spinners.zip">Spinners.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Spinning out of control!</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/spinning-out-of-control</link>
      <pubDate>Tue, 13 May 2008 19:42:00 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/05/13/spinning-out-of-control/</guid>
      <description><![CDATA[What's going on?  Well...I was wondering what control to explore this week. Currently I have my...]]></description>
      <content:encoded><![CDATA[<p><strong><u>What's going on?</u></strong></p>  <p>Well...I was wondering what control to explore this week. Currently I have my <em><a href="https://en.wikipedia.org/wiki/Sherlock_Holmes">Sherlock</a></em> hat on and trying to filter down the list of necessary controls using the Silverlight framework to meet the most common Rich Internet Application requirements. We have not received too many requests for Spinner/NumericUpDown but I thought I would try out how hard it is to come up with something using existing functionality in Silverlight. So here are some observations/findings.</p>  <p><strong><u></u></strong></p>  <p><strong><u>Overview</u></strong></p>  <p>A spinner or a numeric up/down control allows the user to choose values (from a collection that are in a predetermined order) by hitting two buttons that enumerate over the collection in either directions. The values can be dynamically generated (just plain integers, items pulled using a web service etc.) or from a static list (days of the week, months in a year etc.).</p>  <p><strong><u></u></strong></p>  <p><strong><u>So where could a spinner be used?</u></strong></p>  <p>These are some easy examples that come to my mind. I am sure a Spinner control could be re-purposed to do a lot more hence this attempt to find common ground.</p>  <p><strong>Shopping carts: </strong>You can use a Spinner control to specify the quantity for an item being purchased. A user needs to hit up/down to increase or decrease the value or can also type in the exact value desired.</p>  <p><strong>Paging controls:</strong> A lot of websites use paging controls when users need to sift through data. The user can specify the page number or hit next/previous to navigate through. </p>  <p><strong>Picture SlideShow: </strong>Navigate through pictures using previous/next buttons.</p>  <p><strong><u></u></strong></p>  <p><strong><u>Do other frameworks have a Spinner?</u></strong></p>  <p>Here are some existing implementations that support </p>  <p><a href="https://msdn.microsoft.com/en-us/library/system.windows.forms.numericupdown.aspx"><strong>Windows Forms</strong></a>: This one provides purely numeric functionality i.e. the content that can be spun can only be numbers. It does allow some interesting formatting options.</p>  <p><a href="https://msdn.microsoft.com/en-us/library/ms771595(VS.85).aspx"><strong>WPF NumericUpDown</strong></a>: Simple numeric up/down functionality. Not part of the official offering (in the SDK).</p>  <p><a href="https://asp.net/ajax/ajaxcontroltoolkit/samples/NumericUpDown/NumericUpDown.aspx"><strong>AJAX Control Toolkit</strong></a>: Allows for non-numeric as well as numeric data. Data can be pulled from a web-service or can be statically bound as well. </p>  <p><strong><u></u></strong></p>  <p><strong><u>My attempts at Spinning...</u></strong></p>  <p><em><strong>Big Disclaimer: </strong>Do not expect anything pretty :(.Excuse my poor designer skills. I did create better-looking arrows using Expression design but was limited by time constraints and the inability to resize the paths in my designs because of the lack of ViewBox in Silverlight. <strong>Note to self: </strong>need to have ViewBox.</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_14.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_14.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="44" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_6.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_6.png" width="51" border="0" /></a> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_16.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_16.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="48" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_7.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_7.png" width="86" border="0" /></a> </p>  <p>All of these trials use two RepeatButtons but you could choose to use a regular Button as well if you do not want to RepeatButton style clicking. None of these are controls or user controls, just my attempts to see how I can get spinning functionality in place. I will write another blog post that talks about a packaged Spinner control that can be configured to have this functionality.</p>  <p><em><strong>Note: </strong>All the controls I use below are part of the Silverlight 2 Beta 1 runtime or its SDK. Both can be <a href="https://silverlight.net/GetStarted/">downloaded from here</a>. Documentation for the same is available <a href="https://msdn.microsoft.com/en-us/library/cc189031(vs.95).aspx">here</a>.</em></p>  <p><strong><u>With a TextBox</u></strong></p>  <p>I started with the idea that I should be able to simply update the number in a TextBox by parsing the existing contents.&#160; </p>  <p><strong><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_6.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_6.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="77" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_2.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_2.png" width="453" border="0" /></a></strong></p>  <p><strong>Pluses: </strong></p>  <ol>   <li>This one was pretty straightforward just snap in a TextBox and two RepeatButtons.</li>    <li>Having a RepeatButton instead of a regular Button allows me to quickly increment/decrement without having to mouse down and up multiple times. Although, just swapping in a Button instead will still just work. </li>    <li>I placed the RepeatButtons on either side of the TextBox to demonstrate that you could have a simple paging control with little effort. I update the number in the click handlers of the two buttons. </li> </ol>  <p><strong>Limitations:</strong> </p>  <ol>   <li>You are pretty much tied to numeric values and cannot exploit other data-types.</li>    <li>I do not perform any formatting/masking on the numbers. </li> </ol>  <p><strong><u>With a ListBox</u></strong></p>  <p>My main motivation here was to bind to a set of values and navigate through them showing only one of them at a time. My team mate, David, <a href="https://blogs.msdn.com/delay/archive/2008/03/12/lb-sv-why-three-wacky-uses-for-silverlight-2-s-listbox-and-scrollviewer.aspx">does a SlideShow using the same principle</a> and I used that as an inspiration. I hide the scroll bars and configure it such that only one item can be seen at a time.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_10.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_10.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="102" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_4.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_4.png" width="481" border="0" /></a> </p>  <p><strong>Pluses:</strong></p>  <ol>   <li>Databinding is taken care of and works easily for both static and dynamic data.</li>    <li>Buttons can be disabled/enabled based on items left to spin to in either direction.</li> </ol>  <p><strong>Limitations:</strong></p>  <ol>   <li>ListBox introduces too much size and functionality overhead in terms of its template and scrolling. The latter is disabled in this case.</li>    <li>Need a little bit of manual tweaking to get just one item to display. It is too hard-coded to the item size and may not be very flexible if the data-types change.</li> </ol>  <p><strong>With a ContentControl</strong></p>  <p>The idea here was to navigate across and choose any kind of content. In the picture below I use a TextBox in the DataTemplate whose Text property is bound to the Content property of the ContentControl.</p>  <p><strong><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_12.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_12.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="95" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_5.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/SpinnerorNumericUpDown_11E1E/image_thumb_5.png" width="458" border="0" /></a></strong></p>  <p><strong>Pluses:</strong></p>  <p>Usage scenarios that come to my mind are slide shows, menus, just plain numeric up/down, combo-box style TextBoxes etc. all that will light up with data templating. </p>  <p><strong>Limitations:</strong></p>  <p>I had to manage the data binding tasks manually since I did not have the built-in support of an ItemsControl but it could still be managed. I will give it a shot in my next blog post.</p>  <p>&#160;</p>  <p><strong><u>To wrap up...</u></strong></p>  <p>I have attached the solution based on the <a href="https://silverlight.net/GetStarted/">Silverlight 2 Beta 1</a> bits that includes the source code for all the three samples. Again, it is not in a super-reusable form and purely includes some simple event handling behind the scenes to achieve this scenario with existing Silverlight components. I will attempt to release a more reusable version very soon. </p>  <p>Let me know what are your most important requirements from a Spinner. Those should help me a great deal!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/08/50/21/90/Spinner.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-08-50-21-90/Spinner.zip">Spinner.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Community in Control!</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/community-in-control</link>
      <pubDate>Tue, 22 Apr 2008 02:50:27 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/04/22/community-in-control/</guid>
      <description><![CDATA[Lately my Toolkit tasks involve working with passionate members who are making it a great,...]]></description>
      <content:encoded><![CDATA[<p>Lately my <a href="https://asp.net/ajax/ajaxcontroltoolkit/samples">Toolkit</a> tasks involve working with passionate members who are making it a great, self-sustaining community project. How is that? They are contributing in the following two ways:</p>  <ol>   <li><strong><u>Patches</u>: </strong>Patches are mostly for small bug fixes or feature additions which allow the member to invest limited time and still add value to the Toolkit by solving very targeted problems reported by users. We have been <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchUtility&amp;referringTitle=ContributingToTheToolkit">checking in a lot of patches</a> on behalf of our users and the trend keeps going up. We hope to see more of those coming.&#160; </li>    <li><strong><u>New Controls</u>:</strong> We also have some members who are taking the Toolkit platform and <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=CandidateControls&amp;referringTitle=Home">building great controls</a> on top of it <strong>and</strong> sharing their code on <a href="https://www.codeplex.com/">CodePlex</a> following the <a href="https://asp.net/ajax/ajaxcontroltoolkit/samples">Toolkit</a> model.&#160; Some of these solutions cater to control requests made by various users using the <a href="https://www.codeplex.com/AtlasControlToolkit/WorkItem/AdvancedList.aspx">Toolkit Issue Tracker</a>. Please try out these controls and provide their authors with feedback using their projects' Issue trackers. </li> </ol>  <p>Would you like to see your Toolkit control listed <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=CandidateControls&amp;referringTitle=Home">here</a>? Shoot us <a href="mailto:ajaxtk@microsoft.com">an email</a> and we will take it from there!</p>]]></content:encoded>
    </item>
    <item>
      <title>Why don't you Slide-r?</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/why-dont-you-slide-r</link>
      <pubDate>Sat, 08 Mar 2008 04:30:00 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/03/08/why-dont-you-slide-r/</guid>
      <description><![CDATA[In this post, I hope to give an introduction to the Silverlight Slider that is part of the...]]></description>
      <content:encoded><![CDATA[<p>In this post, I hope to give an introduction to the Silverlight <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a> that is part of the Silverlight 2 Beta 1 SDK and share with you some interesting usage scenarios that demonstrate how to use the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a> API's and change its default look and feel.</p>
<p><b><u>Anatomy of the Slider</u></b></p>
<p>The Silverlight <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a> owes most of its design to the WPF Slider and we have tried to ensure that it is a subset of the WPF Slider both in terms of the API's and behavior. It consumes/builds on top of the following classes, all of which map back to WPF.</p>
<ul>
<li><b><u>RangeBase: </u></b>The Silverlight <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.rangebase%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx">RangeBase</a> class mimics the behavior and API's of the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.primitives.rangebase.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.primitives.rangebase.aspx">WPF RangeBase</a> class. Although, Silverlight does not support built-in value coercion, the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.rangebase%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.rangebase(VS.95).aspx">RangeBase</a> class fulfils all the <a href="https://msdn2.microsoft.com/en-us/library/ms743230.aspx#animations" mce_href="https://msdn2.microsoft.com/en-us/library/ms743230.aspx#animations">WPF RangeBase coercion rules</a>.</li>
<li><b><u>RepeatButton: </u></b>The <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.primitives.repeatbutton%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.primitives.repeatbutton(VS.95).aspx">RepeatButton</a> class as in WPF fires click events at specified intervals until the mouse is released.</li>
<li><b><u>Thumb:</u> </b><a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.primitives.thumb%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.primitives.thumb(VS.95).aspx">Thumb</a> supports drag and drop events and enables the user to increase and decrease the value of the Slider by <a href="https://msdn2.microsoft.com/en-us/library/ms593264.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms593264.aspx">SmallChange</a>.</li></ul>
<p><b><u>Slider Template</u></b></p>
<p><a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a> is made of 5 core visual elements:</p>
<ol>
<li>The <b>RootElement</b> which serves as a container to all the rest of the elements.</li>
<li>The <b>FocusVisualElement</b> whose visibility is toggled when the Slider loses or gains focus.</li>
<li>The <b>LargeChangeIncreaseRepeatButtonElement</b> which is overlaid on the Slider's root and when clicked, causes the value of the Slider to be increased by <a href="https://msdn2.microsoft.com/en-us/library/ms593259.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms593259.aspx">LargeChange</a>.</li>
<li>The <b>LargeChangeDecreaseRepeatButtonElement</b> which is overlaid on the Slider's root and when clicked, causes the value of the Slider to be decreased by <a href="https://msdn2.microsoft.com/en-us/library/ms593259.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms593259.aspx">LargeChange</a>.</li>
<li>The <b>Thumb</b> element which can be dragged around and causes the value of the Slider to be increased or decreased depending on the direction in which it is being dragged and the <a href="https://msdn2.microsoft.com/en-us/library/ms605428%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms605428(VS.95).aspx">IsDirectionReversed</a> property set on the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a>.</li></ol>
<p><b><u>Some Template Tips:</u> </b></p>
<p><b>Optional Horizontal and Vertical Template parts: </b>The actual number <a href="https://msdn2.microsoft.com/en-us/library/cc278073%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/cc278073(VS.95).aspx">default template parts</a> of the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a>, however, exceeds 5. This is because the last three are duplicated for both <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider.orientation%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider.orientation(VS.95).aspx">Horizontal and Vertical Orientation</a> of the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider(VS.95).aspx">Slider</a>. If the users of your template would like to use the Orientation property, then you may want to provide both the Horizontal and Vertical parts If you do not specify the vertical template, create a Slider that consumes that template and set the Orientation to be Vertical then the Slider will not show up. The Horizontal usage will continue to work as expected.</p>
<p><b>Grid layout requirement: </b>We require that the Slider's Vertical and Horizontal template elements be grids with three rows or three columns respectively containing the arrangement RepeatButton - Thumb - RepeatButton. Here is the XAML from the template that defines the Horizontal Template layout. The default template also demonstrates which one should have star-sizing and which ones should be Auto. This restriction has been put into place to respect the <a href="https://msdn2.microsoft.com/en-us/library/ms605428%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms605428(VS.95).aspx">IsDirectionReversed</a> property.</p>
<blockquote>
<p><font face="Courier New" size="2">&lt;!-- Horizontal Template --&gt; <br>&lt;Grid x:Name="HorizontalTemplateElement"&gt; <br>&nbsp;&nbsp; &lt;Grid.ColumnDefinitions&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="Auto" /&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="Auto" /&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColumnDefinition Width="*" /&gt; <br>&nbsp;&nbsp; &lt;/Grid.ColumnDefinitions&gt;</font></p>
<p><font face="Courier New" size="2">&lt;!-- rest of the template --&gt;</font></p>
<p><font face="Courier New" size="2">&lt;/Grid&gt;</font></p></blockquote>
<p><b><u>Slider examples</u></b> </p>
<p>I have put together some examples that demonstrate simple customization of the Slider. You can download the zip to get the source code. I have used the bare minimum parts required to achieve my scenario, so you will see that I do not specify the Vertical template or the FocusVisualElement. Both the examples below do not use the Thumb. That was not a deliberate attempt to undermine the importance of the Thumb. I should have more Thumb examples coming up.</p>
<p><b><u>Slider to modify the Opacity of an Element</u></b></p>
<p>This Slider changes the opacity of an Image but shows no Thumb. To achieve that, I have changed the Width of the Thumb in the Template to be 0 to meet the layout requirement I mention above. </p>
<p><font face="Courier New" size="2">&lt;Thumb Width="0" x:Name="HorizontalThumbElement" Grid.Column="1"&gt;&lt;/Thumb&gt;</font></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_10.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_10.png" mce_href="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_10.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_thumb_4.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_thumb_4.png" style="border: 0px none ;" alt="image" mce_src="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_thumb_4.png" border="0" height="127" width="244"></a> </p>
<p><u><b>Slider behaving like a Progress Bar</b></u></p>
<p>This is a read-only Slider whose value is changed in response to a timer tick. The read-only feature comes from setting the <a href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider.isenabled%28VS.95%29.aspx" mce_href="https://msdn2.microsoft.com/en-us/library/system.windows.controls.slider.isenabled(VS.95).aspx">IsEnabled</a> property on the Slider to be false. That disallows any user input. The Slider value is still changeable programmatically. I have also updated the default disabled state of the Slider to not change the Opacity and hence it still looks like an active Slider. If you click on it or attempt to change its values using the arrow keys it does not respond.</p>
<p><font face="Courier New" size="2">&lt;Slider x:Name="ProgressBar" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsEnabled="False" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Margin="10, 10, 10, 10" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Minimum="0" Maximum="100" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Style='{StaticResource ProgressBarSliderStyle}'&gt; <br>&lt;/Slider&gt; </font></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_8.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_8.png" mce_href="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_8.png"><img src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_thumb_3.png" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_thumb_3.png" style="border: 0px none ;" alt="image" mce_src="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/WhydontyouSlider_11431/image_thumb_3.png" border="0" height="49" width="259"></a></p>
<p>I hope to post more control customization examples in the near future. Please try it out the Silverlight controls and let us know what you like and don't like. What controls you really want to see coming from Microsoft? </p>
<p>We are listening!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/08/11/16/71/SliderNoThumbSamples.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-08-11-16-71/SliderNoThumbSamples.zip">SliderNoThumbSamples.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Struck by Silver-lightening!</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/struck-by-silver-lightening</link>
      <pubDate>Wed, 05 Mar 2008 17:28:43 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/03/05/struck-by-silver-lightening/</guid>
      <description><![CDATA[The cat is out of the bag, yes, Silverlight 2 Beta 1 is now available for everybody to download and...]]></description>
      <content:encoded><![CDATA[<p>The cat is out of the bag, yes, <a href="https://silverlight.net">Silverlight 2</a> Beta 1 is now available for everybody to <a href="https://silverlight.net/GetStarted">download</a> and use. My past few months have been spent learning Silverlight 2 and building Silverlight 2 controls. </p>  <p><strong><u>Controls I worked on:</u> </strong>I was on the team responsible for the following controls which made their way into the Silverlight 2 Beta 1 SDK:</p>  <ul>   <li>ContentControl and ContentPresenter </li>    <li>The <a href="https://msdn2.microsoft.com/en-us/library/cc189011(VS.95).aspx">Button</a> family which includes       <ul>       <li><a href="https://msdn2.microsoft.com/en-us/library/cc189011(VS.95).aspx">Button</a>, <a href="https://msdn2.microsoft.com/en-us/library/cc188997(vs.95).aspx">HyperlinkButton</a>, RepeatButton </li>        <li>The <a href="https://msdn2.microsoft.com/en-us/library/cc296252(vs.95).aspx">ToggleButton</a> family which includes <a href="https://msdn2.microsoft.com/en-us/library/cc296252(vs.95).aspx">ToggleButton</a>, <a href="https://msdn2.microsoft.com/en-us/library/cc189055(vs.95).aspx">CheckBox</a>, <a href="https://msdn2.microsoft.com/en-us/library/cc189051(vs.95).aspx">RadioButton</a> </li>     </ul>   </li>    <li><a href="https://msdn2.microsoft.com/en-us/library/cc189030(vs.95).aspx">Slider</a> and RangeBase </li> </ul>  <p>I hope to blog about some of them individually and share interesting tips and tricks on how to use them and customize them for your specific purposes. </p>  <p><strong><u>Setting up your Silverlight environment:</u></strong></p>  <p>You can find instructions on setting up your Silverlight development environment <a href="https://silverlight.net/GetStarted">here</a>. I would like to use the Expression Beta 2 suite to make my future samples good looking. You can download the whole suite from <a href="https://www.microsoft.com/expression/products/download.aspx?key=studio2beta">here</a>. Controls source code can be downloaded from <a href="https://www.microsoft.com/downloads/details.aspx?FamilyId=EA93DD89-3AF2-4ACB-9CF4-BFE01B3F02D4&amp;displaylang=en">here</a>. It is so easy!</p>  <p><strong><u>Asking Silverlight questions:</u></strong></p>  <p>We have worked very hard on these controls and we do hope that they serve you well. If you would like to discuss controls specific issues feel free to contact me or you can share them on <a href="https://silverlight.net/forums/35.aspx">the Silverlight Controls Forum</a>. If you have general Silverlight related queries you can find the <a href="https://silverlight.net/forums">right forum on Silverlight.net</a>. </p>  <p><strong>Enjoy!</strong></p>]]></content:encoded>
    </item>
    <item>
      <title>Feb 29th Toolkit Release!</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/feb-29th-toolkit-release</link>
      <pubDate>Fri, 29 Feb 2008 18:00:52 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2008/02/29/feb-29th-toolkit-release/</guid>
      <description><![CDATA[You can experience the new Toolkit here. As has been the case with the last couple of releases, it...]]></description>
      <content:encoded><![CDATA[<p>You can experience the new Toolkit <a href="https://www.asp.net/ajax/ajaxcontroltoolkit/samples">here</a>. As has been the case with the last couple of releases, it includes binaries and source for both .NET Framework 2.0 and .NET Framework 3.5. </p>  <p>Please post any issues you run into on our <a href="https://forums.asp.net/1022.aspx">forums</a>.</p>  <p><strong><em>Mucho</em></strong> thanks to our <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchHallOfFame">patch contributors</a> who made this a very successful release! We would love to include <strong>your</strong> fixes in the next <a href="https://www.asp.net/ajax/ajaxcontroltoolkit/samples">Toolkit</a> release. All you need to do is to <a href="https://www.codeplex.com/AtlasControlToolkit/WorkItem/AdvancedList.aspx">find a bug</a> and <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchUtility">start patching</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Toolkit for .NET Framework 3.5 and Visual Studio 2008</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/toolkit-for-net-framework-3-5-and-visual-studio-2008</link>
      <pubDate>Mon, 19 Nov 2007 21:12:00 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2007/11/19/toolkit-for-net-framework-3-5-and-visual-studio-2008/</guid>
      <description><![CDATA[We have created a new Toolkit release 11119 that goes hand in hand with the official release from...]]></description>
      <content:encoded><![CDATA[<P>We have created a <A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit&amp;ReleaseId=8513" mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit&amp;ReleaseId=8513">new Toolkit release 11119</A> that goes hand in hand with the official release from the Developer Division in Microsoft of the product code-named "Orcas" that packages a <A href="https://msdn2.microsoft.com/vstudio/default.aspx" mce_href="https://msdn2.microsoft.com/vstudio/default.aspx">new version of Visual Studio and a new .NET Framework</A>. We have introduced some version name changes in the Toolkit that reflect which ASP.NET AJAX version it builds on top of. </P>
<UL>
<LI>.NET Framework 3.5 and Visual Studio 2008 (includes ASP.NET AJAX): Toolkit version<STRONG> 3.5.11119.0</STRONG> </LI>
<LI>.NET Framework 2.0, Visual Studio 2005 and ASP.NET AJAX 1.0: Toolkit version <STRONG>1.0.11119.0</STRONG> </LI></UL>
<P>Here are the release notes that you will find on the <A href="https://asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx" mce_href="https://asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx">sample website page</A> as well.</P>
<BLOCKQUOTE>
<P><B><I>Version 3.5.11119.0 for .NET Framework 3.5 and Visual Studio 2008 </I></B></P>
<P><I>Toolkit version 3.5.11119.0 is supported on .NET 3.5 Framework and Visual Studio 2008. It has specific fixes that will make your designer experience in Visual Studio 2008 much better when working with extenders. <BR><B></B></I></P>
<P><I><B>Note:</B> Toolkit version 3.5.11119.0 is only for users who are building on top of .NET Framework 3.5 using Visual Studio 2008. If you are using .NET Framework 2.0 and Visual Studio 2005 then you should use Toolkit version <A href="https://asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx#Framework1.0" mce_href="https://asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx#Framework1.0">1.0.11119.0</A>. <BR><B></B></I></P>
<P><I><B>Setting up the environment to use the Toolkit:</B> </I></P>
<P>· <I>Follow the instructions to download and install Visual Studio 2008 from <A href="https://msdn2.microsoft.com/vstudio/default.aspx" mce_href="https://msdn2.microsoft.com/vstudio/default.aspx">here</A>. </I></P>
<P>· <I>Download the AjaxControlToolkit-Framework3.5.zip or AjaxControlToolkit-Framework3.5-NoSource.zip from the <A href="https://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="https://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx">Toolkit Releases page</A>. </I></P>
<P><I><BR><B>Features: </B></I></P>
<P>· <I><STRONG>JavaScript IntelliSense support:</STRONG> We have added reference tags to all Toolkit JavaScript files that enables you to take advantage of new features in Visual Studio 2008. With the multi-targeting support in this Visual Studio Beta, IntelliSense will be available for the ASP.NET AJAX 1.0 flavor of the Toolkit as well. This <A href="https://blogs.msdn.com/webdevtools/archive/2007/03/02/jscript-IntelliSense-in-orcas.aspx" mce_href="https://blogs.msdn.com/webdevtools/archive/2007/03/02/jscript-IntelliSense-in-orcas.aspx">article</A> discusses the reference tag feature in detail. </I></P>
<P>· <I><STRONG>Extender designer support:</STRONG> Enhanced designer support for Toolkit controls using the new "Add Extender" user interface. </I></P>
<P>· <I><STRONG>Animations and PageMethods in design mode:</STRONG> Design mode workarounds that targeted Visual Studio 2008 Beta 2 issues when using Animations and "Add PageMethod" support in the Toolkit have removed since the release version of Visual Studio 2008 has fixed the same. </I></P>
<P><I><BR><A></A><B>Version 1.0.11119.0 for ASP.NET AJAX version 1.0 and .NET Framework 2.0 (No changes from 1.0.10920 </B>except one AutoComplete fix. Please see <A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit&amp;ReleaseId=8513" mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AtlasControlToolkit&amp;ReleaseId=8513">release page</A> for bug information.)</I></P>
<P><B><I></I></B></P>
<P><B><I>Setting up the environment to use the Toolkit: </I></B></P>
<P>· <I>Download the AjaxControlToolkit.zip or AjaxControlToolkit-NoSource.zip from the <A href="https://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="https://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx">Toolkit Releases page</A>. </I></P></BLOCKQUOTE>
<P>Please try it out and let us know if you run into issues.</P>]]></content:encoded>
    </item>
    <item>
      <title>Rich Text Editor is here</title>
      <link>https://docs.microsoft.com/archive/blogs/kirti/rich-text-editor-is-here</link>
      <pubDate>Sat, 10 Nov 2007 17:23:41 GMT</pubDate>
      <dc:creator><![CDATA[kirtid]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kirti/2007/11/10/rich-text-editor-is-here/</guid>
      <description><![CDATA[I am super excited to announce that Kannan Sundararajan, my colleague at Microsoft, has written a...]]></description>
      <content:encoded><![CDATA[<p>I am super excited to announce that <a href="https://blogs.msdn.com/kannans/">Kannan Sundararajan</a>, my colleague at Microsoft, has written a <a href="https://www.codeplex.com/rte">Rich Text Editor control</a> using ASP.NET and JavaScript and shared it under the <a href="https://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx">MS-PL license</a> on CodePlex. It has a very rich feature set and Kannan hopes to enhance it further in the future. Since it is a <a href="https://www.codeplex.com/rte/">CodePlex project</a> you can report issues and make feature requests. </p>  <p><strong><font size="4">Here are the highlights:</font></strong></p>  <ul>   <li><strong>Live demo: </strong>If you would like to see the control in action, then check out this <a href="https://rteditor.members.winisp.net/">live demo</a> that Kannan has put up. </li>    <li><strong>Getting the bits</strong>       <ol>       <li>You can download the latest RichTextEditor bits from <a href="https://www.codeplex.com/SourceControl/ListDownloadableCommits.aspx?ProjectName=rte">the Source Code tab of the CodePlex project</a>. </li>        <li>Unzip the files to a local directory and open the solution using Visual Studio. </li>        <li>The RichTextEditor.dll will be located in the bin directory of the RichTextEditor project. </li>        <li>You can also preview the control by opening the Default.aspx page of the SampleWebSite project in a browser. </li>        <li>To add the RichTextEditor to your project simply reference the RichTextEditor binary in your web project and register its assembly and namespace on the page. </li>     </ol>   </li> </ul>  <ul>   <li><strong>Documentation: </strong>Kannan has a nice Power Point presentation that talks about some of the important features. It is in the Docs folder when you unzip the source. </li>    <li><strong>Features:</strong> Here are some really compelling features that I would like to call out.       <ul>       <li><strong>Clipboard support:</strong> You can copy and paste content from other programs like Microsoft Word, Internet Explorer, Visual Studio into the RichTextEditor and it will persist the formatting. If you copy code from Visual Studio it will preserve the code coloring scheme.           <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/WordCopyRTE_2.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/WordCopyRTE_2.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="581" alt="WordCopyRTE" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/WordCopyRTE_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/WordCopyRTE_thumb.jpg" width="738" border="0" /></a> </p>       </li>        <li><strong>Context sensitive Toolbar: </strong>The ToolBar buttons will reflect the properties of that content automatically when you select it or navigate through it using the mouse or keyboard .           <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/ContextSensitiveRTE_2.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/ContextSensitiveRTE_2.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="381" alt="ContextSensitiveRTE" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/ContextSensitiveRTE_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/ContextSensitiveRTE_thumb.jpg" width="783" border="0" /></a> </p>       </li>        <li><strong>Code Block:</strong> It allows you to format text as code blocks. Simple select the text and format it by clicking the &quot;Code Block&quot; ToolBar button. <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/CodeBlockRTE_2.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/CodeBlockRTE_2.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="189" alt="CodeBlockRTE" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/CodeBlockRTE_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/CodeBlockRTE_thumb.jpg" width="707" border="0" /></a> </li>        <li><strong>Emoticons: </strong>You can express yourself better by adding emoticons to your rich text.           <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/EmoticonsInRTE_2.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/EmoticonsInRTE_2.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="EmoticonsInRTE" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/EmoticonsInRTE_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/EmoticonsInRTE_thumb.jpg" width="203" border="0" /></a> </p>       </li>        <li><strong>HtmlView: </strong>If you would like to have more control over the look and feel of your text then you can edit it in HtmlView as well.           <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/HtmlViewRTE_2.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/HtmlViewRTE_2.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="421" alt="HtmlViewRTE" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/HtmlViewRTE_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/HtmlViewRTE_thumb.jpg" width="538" border="0" /></a> </p>       </li>        <li><strong>Text in multiple languages: </strong>The control currently supports several languages. This means that I can type a message to my mom in my native language, <a href="https://en.wikipedia.org/wiki/Marathi">Marathi</a>, using the RichTextEditor and send it to her. <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/MarathiInRTE_2.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/MarathiInRTE_2.jpg"><img id="id" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="203" alt="MarathiInRTE" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/kirti/WindowsLiveWriter/RichTextEditorishere_B947/MarathiInRTE_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/kirti/WindowsLiveWriter/RichTextEditorishere_B947/MarathiInRTE_thumb.jpg" width="705" border="0" /></a> </li>        <li><strong>Browser support: </strong>The control works well in two of the most widely used browsers Internet Explorer and Firefox. </li>     </ul>   </li> </ul>  <p>&#xA0;</p>  <p><strong><font size="4">Toolkit and the RichTextEditor</font></strong></p>  <p>The RichTextEditor is not a part of the AJAX Control Toolkit and does not use the Toolkit infrastructure either. Currently there are no plans of integrating it into the Toolkit. However, as the new <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=ContributingToTheToolkit&amp;referringTitle=Home">Toolkit contribution model</a> states, we would like to share AJAX controls with the community that provide <a href="https://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=CandidateControls&amp;referringTitle=Home">great solutions for important problems</a> that are commonly faced by a lot of our users. Please try it out and give Kannan your feedback by using the <a href="https://www.codeplex.com/rte/WorkItem/List.aspx">Issue Tracker</a>. </p>  <p>&#xA0;</p>  <p><strong>To richer text!</strong></p>]]></content:encoded>
    </item>
  </channel>
</rss>