<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3315992242210786546</id><updated>2011-11-27T18:29:54.234-05:00</updated><category term='C#'/><category term='Silverlight'/><title type='text'>Venkat Polisetti</title><subtitle type='html'>bit, byte, byte code</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.artiscloud.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3315992242210786546/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.artiscloud.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Venkat Polisetti</name><uri>http://www.blogger.com/profile/12061825004531865476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_y8EIHWO7XqY/S0S3EoCIf7I/AAAAAAAACiM/N7ipkSaiwKE/S220/rao-port+.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3315992242210786546.post-5813365490379702897</id><published>2008-06-28T17:36:00.003-04:00</published><updated>2008-06-28T18:20:58.128-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight Page turn using C#</title><content type='html'>&lt;a href="http://blogs.msdn.com/mitsu/archive/2008/06/10/wpf-and-silverlight-bookcontrols-source-code-available.aspx"&gt;Mitsu &lt;/a&gt;of Microsoft France has an excellent WPF and Silverlight Page turn control that is written in C# and it works in Silverlight 2 Beta 2. &lt;a href="http://blogs.msdn.com/mitsu/archive/2008/06/10/wpf-and-silverlight-bookcontrols-source-code-available.aspx"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://blogs.msdn.com/blogfiles/mitsu/WindowsLiveWriter/WPFandSilverlightBookControlssourcecodea_DBAD/SLBookControl_2.png" border="0" /&gt;&lt;/a&gt; &lt;div&gt;&lt;div&gt;He is using &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx"&gt;ItemsControl&lt;/a&gt; to store the pages for the book and that is throwing an exception after turning pages for a few times. I thing there may be an issue with the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol(VS.95).aspx"&gt;ItemsControl&lt;/a&gt; in the framework itself. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I have created a custom class that you can use instead of the ItemsControl and still use the page turn code.&lt;/div&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;SLBookDemoApp&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;public class  &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;BookPageList&lt;/span&gt;&amp;lt;T&amp;gt; : &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt;, SLMitsuControls.&lt;span style="color:#2b91af;"&gt;IDataProvider&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color:blue;"&gt;#region &lt;/span&gt;IDataProvider Members&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public object &lt;/span&gt;GetItem(&lt;span style="color:blue;"&gt;int &lt;/span&gt;index)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;return this&lt;/span&gt;[index];&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;public int &lt;/span&gt;GetCount()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;return this&lt;/span&gt;.Count;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;#endregion&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;This class inherits List&amp;lt;T&amp;gt; and implements the required iDataProvider interface.&lt;br /&gt;Your Page no longer needs to implement iDataProvider interface and you can remove the code that implements&lt;br /&gt;this interface from Page.xaml.cs.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;strong&gt;&lt;u&gt;Your new Page.xaml.cs looks like this:&lt;/u&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;UserControl &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;="SLBookDemoApp.Page"&lt;br /&gt;    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;="http://schemas.microsoft.com/client/2007"&lt;br /&gt;    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;br /&gt;    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;local&lt;/span&gt;&lt;span style="color:blue;"&gt;="clr-namespace:SLMitsuControls;assembly=SLMitsuControls"&lt;br /&gt;    &lt;/span&gt;&lt;span style="color:red;"&gt;Loaded&lt;/span&gt;&lt;span style="color:blue;"&gt;="UserControl_Loaded"&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;="Stretch" &lt;/span&gt;&lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;="Stretch"&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;local&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;UCBook &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;="book" &lt;/span&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;="150" /&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;strong&gt;&lt;u&gt;Page.xaml.cs looks like  this:&lt;/u&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Windows;&lt;br /&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Windows.Controls;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;SLBookDemoApp&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;public partial class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Page &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;UserControl&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color:blue;"&gt;public &lt;/span&gt;Page()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;private void &lt;/span&gt;UserControl_Loaded(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color:#2b91af;"&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#2b91af;"&gt;BookPageList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;FrameworkElement&lt;/span&gt;&amp;gt; pages = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;BookPageList&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;FrameworkElement&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:blue;"&gt;for &lt;/span&gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;i = 1; i &amp;lt; 5; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color:#2b91af;"&gt;Button &lt;/span&gt;b = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Button&lt;/span&gt;();&lt;br /&gt;                &lt;span style="color:blue;"&gt;if &lt;/span&gt;(i % 2 == 1)&lt;br /&gt;                    b.Click += &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RoutedEventHandler&lt;/span&gt;(Button_Click);&lt;br /&gt;                &lt;span style="color:blue;"&gt;else&lt;br /&gt;                    &lt;/span&gt;b.Click += &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RoutedEventHandler&lt;/span&gt;(Button_Click_1);&lt;br /&gt;&lt;br /&gt;                b.Content = &lt;span style="color:#a31515;"&gt;"Page - " &lt;/span&gt;+ i;&lt;br /&gt;&lt;br /&gt;                pages.Add(b);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            book.SetData(pages);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;private void &lt;/span&gt;Button_Click(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color:#2b91af;"&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            book.AnimateToNextPage(500);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;private void &lt;/span&gt;Button_Click_1(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color:#2b91af;"&gt;RoutedEventArgs &lt;/span&gt;e)&lt;br /&gt;        {&lt;br /&gt;            book.AnimateToPreviousPage(500);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3315992242210786546-5813365490379702897?l=blog.artiscloud.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.artiscloud.com/feeds/5813365490379702897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3315992242210786546&amp;postID=5813365490379702897' title='48 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3315992242210786546/posts/default/5813365490379702897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3315992242210786546/posts/default/5813365490379702897'/><link rel='alternate' type='text/html' href='http://blog.artiscloud.com/2008/06/silverlight-page-turn-using-c.html' title='Silverlight Page turn using C#'/><author><name>Venkat Polisetti</name><uri>http://www.blogger.com/profile/12061825004531865476</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/_y8EIHWO7XqY/S0S3EoCIf7I/AAAAAAAACiM/N7ipkSaiwKE/S220/rao-port+.JPG'/></author><thr:total>48</thr:total></entry></feed>
