<?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-4941796923340518991</id><updated>2011-11-27T15:33:12.965-08:00</updated><category term='Vivek Kumar'/><category term='MVVM'/><category term='Prism'/><category term='Button'/><category term='silverlight'/><category term='Entity Data Model'/><category term='DataGrid'/><category term='ListBox'/><category term='ClickOnce'/><category term='IIS Server'/><category term='C#.Net Application'/><category term='Web Service'/><category term='MultiTempate'/><category term='WebTools'/><category term='Wrapping'/><category term='Command'/><category term='SOAP'/><category term='Image Gallery'/><category term='WebPage'/><category term='Filp'/><category term='Saral'/><category term='HTML'/><category term='ASP.Net Web Services'/><category term='JavaScript'/><category term='Multithreading'/><category term='WPF'/><category term='Style'/><category term='Coverflow'/><title type='text'>Tech-talk @ Vivek</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-1790812348476671014</id><published>2011-09-11T06:58:00.000-07:00</published><updated>2011-09-13T05:54:07.124-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Multithreading'/><title type='text'>Threading Patterns: The Worker Thread Pattern</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;The Worker Thread pattern introduces concept of &lt;b style="mso-bidi-font-weight: normal;"&gt;Thread per Message &lt;/b&gt;i.e. a data/operation pair is executed in the context of its own thread. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;The design pattern eases efficient execution of multiple long running processing. In fact this is nothing but executing long running processing in multiple threads instead of running them sequentially. Usually this pattern is used to move long running processing in different threads.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;The example implementation below has an abstract class WorkerThreadBase. This class exposes multiple protected constructors which advanced users can use to specify the name, priority and background/foreground behaviour of the threads.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;It has one abstract method Work which encapsulates the actual processing needs to be done.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;Public method Start() is to start the operation asynchronous And Stop() method to stop the operation blocks until the thread completes execution. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;There is one Boolean protected property StopRequested which can be polled inside the implementation of abstract method Work() to detect if the user wants to stop the thread&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 12pt 0cm;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;User has to create Derived class and call the Start/Stop method to perform the task.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 0cm 0cm 12pt;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;There is a static method WaitAll() on the WorkerThreadBase class that can be used to wait for one or more task. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background: white; line-height: 14.25pt; margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background: white; line-height: 14.25pt; margin: 0cm 0cm 0pt;"&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="background: white; color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;//wait for the two threads to finish&lt;/span&gt;&lt;span style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background: white; line-height: 14.25pt; margin: 0cm 0cm 0pt;"&gt;&lt;span style="background: white; color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;WorkerThreadBase.WaitAll(copyFileWorker, dummyWorker);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 0cm 0cm 12pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="line-height: 14.25pt; margin: 0cm 0cm 12pt;"&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;Using this design pattern processing can be performed in efficiently however it involves the overhead of thread creation and clean-up hence use of this Pattern should be limited to only long running processes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Threading;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;namespace WorkerThreadPattern&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public abstract class WorkerThreadBase : IDisposable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Thread _workerThread;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ManualResetEvent _stopping;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ManualResetEvent _stopped;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool _disposed;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool _disposing;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected WorkerThreadBase()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : this(null, ThreadPriority.Normal)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected WorkerThreadBase(string name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : this(name, ThreadPriority.Normal)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected WorkerThreadBase(string name,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ThreadPriority priority)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : this(name, priority, false)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected WorkerThreadBase(string name,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ThreadPriority priority,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool isBackground)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _disposing = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _disposed = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stopping = new ManualResetEvent(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stopped = new ManualResetEvent(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _workerThread = new Thread(threadProc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _workerThread.Name = name == null ? GetType().Name : name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _workerThread.Priority = priority;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _workerThread.IsBackground = isBackground;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected bool StopRequested&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return _stopping.WaitOne(1, true); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Start()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ThrowIfDisposedOrDisposing();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _workerThread.Start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Stop()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ThrowIfDisposedOrDisposing();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stopping.Set();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stopped.WaitOne();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IDisposable Members&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispose(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void WaitAll(params WorkerThreadBase[] threads)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WaitHandle.WaitAll(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.ConvertAll&amp;lt;WorkerThreadBase, WaitHandle&amp;gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; threads,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(WorkerThreadBase workerThread)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return workerThread._stopped; }));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void WaitAny(params WorkerThreadBase[] threads)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WaitHandle.WaitAny(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.ConvertAll&amp;lt;WorkerThreadBase, WaitHandle&amp;gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; threads,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(WorkerThreadBase workerThread)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { return workerThread._stopped; }));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected virtual void Dispose(bool disposing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //do nothing if disposed more than once&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_disposed)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (disposing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _disposing = disposing;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //stop the thread;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stop();&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //make sure the thread joins the main thread&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _workerThread.Join(1000);&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //dispose of the waithandles&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disposeWaitHandle(_stopping);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disposeWaitHandle(_stopped);&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _disposing = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //mark as disposed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _disposed = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void ThrowIfDisposedOrDisposing()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_disposing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new InvalidOperationException("....................");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_disposed)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ObjectDisposedException(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetType().Name,"............");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected abstract void Work();&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void threadProc()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Work();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stopped.Set();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void disposeWaitHandle(WaitHandle waitHandle)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (waitHandle != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; waitHandle.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; waitHandle = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="background: white; color: #222222; font-family: &amp;quot;Andale Mono&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10.5pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;Source Code&amp;nbsp; &lt;a href="https://sites.google.com/site/vivekvision2/WorkerThreadPattern.zip?attredirects=0&amp;amp;d=1"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-1790812348476671014?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/1790812348476671014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=1790812348476671014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1790812348476671014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1790812348476671014'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2011/09/threading-patterns-worker-thread.html' title='Threading Patterns: The Worker Thread Pattern'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-8376216128790455089</id><published>2011-07-31T02:57:00.000-07:00</published><updated>2011-08-14T08:33:16.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#.Net Application'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Developing Green field Enterprise Application in .NET 4.0 by leveraging C# Open Libraries</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;As the enhancement in .NET is making life far easier as the same time open source is taking canter stage of&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;.NET technology paradise. The maturity of the .NET technology can be evaluated with the number of open source ready for utilization. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;If a chance is given any .NET technologist will be&amp;nbsp;flooded with list of libraries ready to be used. &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;In this blog post I have tried to list down all the libraries of my choice. &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Off course I will start with front end GUI development in WPF/Silverlight&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;1. &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;Prism/Composite Application Block: &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://compositewpf.codeplex.com/"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://compositewpf.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Prism provides ready to use libraries &amp;amp; guidance to design &amp;amp; develop GUI rapidly. It makes the whole exercise more easily, flexible &amp;amp; easy to maintain WPF desktop application &amp;amp; Silverlight Rich Internet Applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Some of the silent features of this Library include:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;-Separation of concerns&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;-Loose coupling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;-Easy &amp;amp; seamless integration of module&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2. Relay Command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;o:p&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Relay Command is a simplified variation of the DelegateCommand found in the Prism/ Composite Application Block.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;3. Making call back in UI thread using Dispatcher&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163328.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://msdn.microsoft.com/en-us/magazine/cc163328.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;4. Use of ISynchronizationContext for Synchronous Invocation of Delegates&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://www.codeproject.com/Articles/51457/Synchronous-Invocation-of-Delegates-with-the-Silve.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://www.codeproject.com/Articles/51457/Synchronous-Invocation-of-Delegates-with-the-Silve.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Using UISynchronization context Library developed by &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;Daniel Vaughan&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://www.codeproject.com/KB/silverlight/Mtvt.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://www.codeproject.com/KB/silverlight/Mtvt.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://www.codeproject.com/KB/silverlight/SL4FileUploadAnd_SL4_MVVM.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://www.codeproject.com/KB/silverlight/SL4FileUploadAnd_SL4_MVVM.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Various use of Dispatcher in Silverlight GUI:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://dotnetslackers.com/articles/silverlight/Multithread-Programming-in-Silverlight-4.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://dotnetslackers.com/articles/silverlight/Multithread-Programming-in-Silverlight-4.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;5. Useful Library Cinch&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Many features can be borrowed from this library&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://cinch.codeplex.com/"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://cinch.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;6. ManifestManagerUtility&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Usueful in the deployment of&amp;nbsp;WPF client application. This tool uses&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;ClickOnce APIs for deployment. Its d&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;esigned to address most common administrative tasks done using&amp;nbsp;ClickOnce in Visual Studio.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Its a lightweight&amp;nbsp;desktop based application that can be given to&amp;nbsp;IT administrators.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://compositewpf.codeplex.com/releases/view/14771"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://compositewpf.codeplex.com/releases/view/14771&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;strong&gt;Libraries useful for Service Development:&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;/o:p&gt;&lt;o:p&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;1.&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Design Patterns for Decomposition and Coordination on Multicore Architectures (Parallel Programming with Microsoft .NET 4.0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff963553.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://msdn.microsoft.com/en-us/library/ff963553.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;For Backend processing one of the following&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Parallel Programming Pattern can be pickedup:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://parallelpatterns.codeplex.com/"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://parallelpatterns.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;2. Web Service Software Factory (no more too relevent but can be looked for illustrations)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://servicefactory.codeplex.com/"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://servicefactory.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;3. Microsoft Enterprise Library &lt;/span&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;a href="http://entlib.codeplex.com/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://entlib.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;o:p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff648138.aspx"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://msdn.microsoft.com/en-us/library/ff648138.aspx&lt;/span&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  Data Access Block is widly used feature of Microsoft Enterprise library.&amp;nbsp; Even &lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;retrieving Data as Objects is possible: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff953187%28v=PandP.50%29.aspx"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://msdn.microsoft.com/en-us/library/ff953187%28v=PandP.50%29.aspx&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; 4.&amp;nbsp;Composite Services&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Library, Sample applicaiton &amp;amp; Guidance for building enterprise SOA-based composite service applications&lt;/span&gt;&lt;o:p&gt;&lt;a href="http://compositeservices.codeplex.com/"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;http://compositeservices.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Agile Development Practices:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/practices/dd128747"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;http://msdn.microsoft.com/en-us/practices/dd128747&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;NHibernate is an open-source ORM for .NET derived from the successful open-source ORM Hibernate for Java. Its one of the most popular and most-used ORMs in the open-source community; it has well-established community support and numerous plug-in and code generators.&lt;br /&gt;http://nhforge.org&lt;br /&gt;&lt;a href="http://fluentnhibernate.org/FluentNHibernate"&gt;http://fluentnhibernate.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://fluentnhibernate.org/FluentNHibernate"&gt;FluentNHibernate&lt;/a&gt; is an open-source plug-in helpes in generating mapping files using C#&lt;br /&gt;&lt;br /&gt;Microsoft Enterprise Library - Validation Application Block (VAB)&lt;br /&gt;Additional validation frameworks that you want to explore for .NET are:&lt;br /&gt;EVIL (&lt;a href="http://evil.codeplex.com/"&gt;http://evil.codeplex.com&lt;/a&gt;) An open-source project that works much like the VAB library, using decorations and rulesets.&lt;br /&gt;Active Record (&lt;a href="http://www.castleproject.org/activerecord/index.html"&gt;http://www.castleproject.org/activerecord/index.html&lt;/a&gt;) An open-source plug-in for NHibernate that transforms your domain into an Active Record domain.&lt;br /&gt;Conditions (&lt;a href="http://conditions.codeplex.com/"&gt;http://conditions.codeplex.com&lt;/a&gt;) Another open-source framework that uses the Fluent Interface (see Chapter 2) instead of attributes.&lt;br /&gt;&lt;br /&gt;WPF Ribbon control available&lt;br /&gt;http://wpf.codeplex.com/&lt;br /&gt;&lt;br /&gt;Cinch is available on CodePlex at &lt;a href="http://cinch.codeplex.com/"&gt;http://cinch.codeplex.com/&lt;/a&gt;,&lt;br /&gt;&amp;nbsp;Cinch, by Sacha Barber&lt;br /&gt;&lt;br /&gt;MEFedMVVM&lt;br /&gt;MEFedMVVM is a library for building Managed Extensibility Framework (MEF) applications using Silverlight or WPF&lt;br /&gt;&lt;a href="http://mefedmvvm.codeplex.com/"&gt;http://mefedmvvm.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;MVVM Light Toolkit, by Laurent Bugnion&lt;br /&gt;http://www.galasoft.ch/mvvm/getstarted/&lt;br /&gt;&lt;br /&gt;a set of utilities for MVVM toolset “Radical.”&lt;br /&gt;&lt;a href="http://radical.codeplex.com/"&gt;http://radical.codeplex.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Calcium is an open-source WPF and Silverlight (alpha release) composite application toolset that takes advantage of the Composite Application Library -&amp;nbsp; http://calciumsdk.net/&lt;br /&gt;&lt;br /&gt;Caliburn was introduced to WPF developers at around the same time Microsoft released the first version of Prism.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://caliburn.codeplex.com/"&gt;http://caliburn.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Full complement of features, Caliburn also ships in a micro version called Caliburn.Micro, available at &lt;br /&gt;&lt;a href="http://caliburnmicro.codeplex.com/"&gt;http://caliburnmicro.codeplex.com/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-8376216128790455089?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/8376216128790455089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=8376216128790455089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8376216128790455089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8376216128790455089'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2011/07/developing-green-field-enterprise.html' title='Developing Green field Enterprise Application in .NET 4.0 by leveraging C# Open Libraries'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-6735055596724964148</id><published>2011-07-30T03:47:00.000-07:00</published><updated>2011-07-30T04:22:13.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ClickOnce'/><category scheme='http://www.blogger.com/atom/ns#' term='C#.Net Application'/><title type='text'>Manifest Manager Utility makes ClickOnce Deployment easy for IT Administrators</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Usually ClickOnce deployment feature can be utilized from Visual Studio IDE But the problem with this approach is that Visual Studio is not preferred &amp;amp; convenient for an IT Administrator. However Visual Studio exposes most of the capabilities needed for ClickOnce Deployment. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Open Source tool &lt;/span&gt;&lt;a href="http://compositewpf.codeplex.com/releases/view/14771"&gt;&lt;span style="color: blue; font-family: Verdana, sans-serif;"&gt;Manifest Manager Utility&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt; has been developed to&amp;nbsp;ease the control &amp;amp; audit requirements associated with Enterprise Level Application deployment. This tool has been designed to addres most common&amp;nbsp;&lt;span style="mso-spacerun: yes;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Microsoft Sans Serif&amp;quot;, Arial, Geneva, sans-serif;"&gt;&amp;nbsp;administrative tasks for ClickOnce.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Microsoft Sans Serif&amp;quot;, Arial, Geneva, sans-serif;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This is a friendly&amp;nbsp;desktop based application for&amp;nbsp;IT administrators. Unlike providing&amp;nbsp;very detailed steps that needs to be performed in the correct order, for common tasks&amp;nbsp;during deployment&amp;nbsp;such as modifying the application files listed in the application manifest, it makes deployment simpler.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Microsoft Sans Serif&amp;quot;, Arial, Geneva, sans-serif;"&gt;&lt;b&gt;&lt;a href="http://compositewpf.codeplex.com/releases/view/14771"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Manifest Manager Utility&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;also &lt;/span&gt;demonstrates how to use the ClickOnce publishing API to manage deployment and application manifests in a simpler way. This utility is used for updating application manifest file lists and deployment manifest settings.&amp;nbsp; It can be further customized as per the project specific requirements. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Fe0MvE__V7I/TjPgiCXJLqI/AAAAAAAABAc/vR7HUrSQD_I/s1600/ManifestManagerUtility.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://1.bp.blogspot.com/-Fe0MvE__V7I/TjPgiCXJLqI/AAAAAAAABAc/vR7HUrSQD_I/s400/ManifestManagerUtility.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Microsoft Sans Serif&amp;quot;, Arial, Geneva, sans-serif;"&gt;More Details about the APIs can found at &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Microsoft Sans Serif&amp;quot;, Arial, Geneva, sans-serif;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms125799(v=VS.80).aspx"&gt;&lt;span style="font-family: Times New Roman;"&gt;http://msdn.microsoft.com/en-us/library/ms125799(v=VS.80).aspx&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #30332d; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Microsoft Sans Serif&amp;quot;, Arial, Geneva, sans-serif;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff921100(v=pandp.20).aspx"&gt;&lt;span style="font-family: Times New Roman;"&gt;http://msdn.microsoft.com/en-us/library/ff921100(v=pandp.20).aspx&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/t71a733d(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/t71a733d(v=VS.100).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/748fh114.aspx"&gt;http://msdn.microsoft.com/en-us/library/748fh114.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/s22azw1e.aspx"&gt;http://msdn.microsoft.com/en-us/library/s22azw1e.aspx&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-6735055596724964148?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/6735055596724964148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=6735055596724964148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/6735055596724964148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/6735055596724964148'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2011/07/manifest-manager-utility-makes.html' title='Manifest Manager Utility makes ClickOnce Deployment easy for IT Administrators'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Fe0MvE__V7I/TjPgiCXJLqI/AAAAAAAABAc/vR7HUrSQD_I/s72-c/ManifestManagerUtility.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-1936674437567661085</id><published>2010-11-28T04:37:00.001-08:00</published><updated>2010-11-28T04:38:39.496-08:00</updated><title type='text'>WPF Busy Indicator</title><content type='html'>&lt;p style="text-align:left"&gt;BusyIndicator control in WPF&amp;nbsp;&lt;/p&gt;&lt;p style="text-align:left"&gt;&lt;br&gt;&lt;/p&gt;&lt;p style="text-align:left"&gt;Environment: Visual Studio 2010&lt;/p&gt;&lt;p style="text-align:left"&gt;&lt;br&gt;&lt;/p&gt;&lt;p style="text-align:left"&gt;Download : &lt;a href="https://sites.google.com/site/vivekvision2/WpfBusyIndicator.zip?attredirects=0&amp;amp;d=1" id="a_du" title="Sample code"&gt;Sample code&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align:center"&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://wpftoolkit.codeplex.com/" id="l-rx" title="Extended WPF Toolkit"&gt;Extended WPF Toolkit&lt;/a&gt;&amp;nbsp;has come with the much needed Busy Indicator pretty much similar to the Activity control of Silverlight. You can put content inside the &amp;nbsp;BusyIndicator and bind its property IsBusy with the dependency property in the ViewModel layer.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;BusyIndicator makes it easy to let the user know when an application is busy. Simply wrap the relavent content in an instance of the BusyIndicator control and toggle its IsBusy property to True during any long-running process.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Simple steps to get the application up:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Download the&amp;nbsp;&amp;nbsp;&lt;a href="http://wpftoolkit.codeplex.com/" id="t.th" title="Extended WPF Toolkit"&gt;Extended WPF Toolkit&lt;/a&gt;&amp;nbsp;get WPFToolkit.Extended.dll&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Reference WPFToolkit.Extended.dll in the project&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Add namespace:&lt;/p&gt;&lt;p&gt;xmlns:extToolkit=&amp;quot;clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended&amp;quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;extToolkit:BusyIndicator IsBusy=&amp;quot;False&amp;quot; &amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;..............&lt;/p&gt;&lt;p&gt;Any no of content&lt;/p&gt;&lt;p&gt;..............&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/extToolkit:BusyIndicator&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div id="g-h." style="text-align:left"&gt;&lt;img src="http://docs.google.com/File?id=dfcbn3xb_436ctv4wcg_b" style="height:349px;width:522px"&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;Download : &lt;a href="https://sites.google.com/site/vivekvision2/WpfBusyIndicator.zip?attredirects=0&amp;amp;d=1" id="ypir" title="Sample code"&gt;Sample code&lt;/a&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-1936674437567661085?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/1936674437567661085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=1936674437567661085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1936674437567661085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1936674437567661085'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/11/wpf-busy-indicator.html' title='WPF Busy Indicator'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-1678922902965447287</id><published>2010-08-23T06:05:00.001-07:00</published><updated>2010-08-23T06:07:55.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Saral'/><title type='text'>Saral Framework Development Team: Join &amp; be part of exciting learning Exercise</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Disclaimer: This is an open community project without any funding, liability or restriction, every one involve in the project is owner of project and code. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Join Saral Framework Development Team – Learn, Contribute &amp;amp; Keep the knowledge floating. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Objective: A framework to ease the development of Prism (Composite Application Library) &amp;amp; MVVM based WPF application.&lt;br /&gt;&lt;br /&gt;Mode of Operation : Virtual Platform, Free tools (Gtalk, Skype, Codeplex, TortoiseSVN client)&lt;br /&gt;&lt;br /&gt;Get Started:&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst"&gt;- New to WPF&amp;nbsp;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst"&gt;&lt;a href="http://windowsclient.net/learn/videos_wpf.aspx"&gt;http://windowsclient.net/learn/videos_wpf.aspx&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast"&gt;&lt;a href="http://windowsclient.net/wpf/"&gt;http://windowsclient.net/wpf/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- New to MVVM based application&lt;/div&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/dd419663.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;- New to Prism (Composite Application Block)&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/library/cc707890"&gt;http://msdn.microsoft.com/library/cc707890&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff648611.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff648611.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff648611.aspx"&gt;&lt;/a&gt;&lt;a href="http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/"&gt;http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;First phase of Plan: &amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;- Putting together reusable classes to ease common tasks (Strictly no code behind/ MVVM a must)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Second phase of Plan:&lt;/div&gt;&lt;div&gt;- Putting together reusable Navigation patterns to facilitate development of Prism &amp;amp; MVVM based WPF application&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Third phase of Plan:&lt;/div&gt;&lt;div&gt;- Development of Customizable Prism Shell where modules can be injected.&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-1678922902965447287?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/1678922902965447287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=1678922902965447287' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1678922902965447287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1678922902965447287'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/08/saral-framework-development-team-join.html' title='Saral Framework Development Team: Join &amp;amp; be part of exciting learning Exercise'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-346422289006270203</id><published>2010-08-23T05:55:00.001-07:00</published><updated>2010-08-23T06:08:31.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Prism'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Saral'/><title type='text'>Simplified ICommand implementation in WPF MVVM application</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://saral.codeplex.com/" id="a6-v" title="Saral"&gt;Saral&lt;/a&gt;&amp;nbsp;framework which provides utilities to ease the MVVM implementation in Silverlight and WPF application presents SaralCommand. This is a simplified version of &lt;a href="http://msdn.microsoft.com/en-US/library/cc707896"&gt;DelegateCommand&lt;/a&gt;&amp;nbsp;which &amp;nbsp;was introduced with&amp;nbsp;&amp;nbsp;&lt;a href="http://msdn.microsoft.com/library/cc707890"&gt;Microsoft Composite Application Library&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;SaralCommand makes things very simple by allowing developer to concentrate on business logic and get rid of ICommand interface implementation. I have just checked-in the code of SaralCommand in the &lt;a href="http://saral.codeplex.com/" id="kt83" title="Saral"&gt;Saral&lt;/a&gt;&amp;nbsp;framework hosted on Codeplex&lt;/div&gt;&lt;br /&gt;&lt;div&gt;This post provides an example implementation of SaralCommand. &amp;nbsp;I have taken a Prism and MVVM based WPF application posted in my &lt;a href="http://technovivek.blogspot.com/2010/07/wpf-demonstration-application-using.html" id="pmyw" title="previous blog post"&gt;previous blog post&lt;/a&gt;&amp;nbsp;to work with SaralCommand.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Environment: Visual Studio 2010&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Source code : &lt;a href="https://sites.google.com/site/vivekvision2/SaralCommand.zip?attredirects=0&amp;amp;d=1" id="l_oh" title="Download"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SaralCommand&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; executeLogic;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; canExecuteCondition;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; predicateFlag;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; SaralCommand(&lt;span style="color: #2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; executeLogic, &lt;span style="color: #2b91af;"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; canExecuteCondition)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.executeLogic = executeLogic;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.canExecuteCondition = canExecuteCondition;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.predicateFlag = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; SaralCommand(&lt;span style="color: #2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; executeLogic)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.executeLogic = executeLogic;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.canExecuteCondition = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.predicateFlag = &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; CanExecute(&lt;span style="color: blue;"&gt;object&lt;/span&gt; parameter)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (predicateFlag == &lt;span style="color: blue;"&gt;false&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; canExecuteCondition(parameter);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt; CanExecuteChanged&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;add&lt;/span&gt; { &lt;span style="color: #2b91af;"&gt;CommandManager&lt;/span&gt;.RequerySuggested += &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;remove&lt;/span&gt; { &lt;span style="color: #2b91af;"&gt;CommandManager&lt;/span&gt;.RequerySuggested -= &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Execute(&lt;span style="color: blue;"&gt;object&lt;/span&gt; parameter)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; executeLogic(parameter);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Illustration of SaralCommand&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt; Saral.Command.&lt;span style="color: #2b91af;"&gt;SaralCommand&lt;/span&gt; saralCommand;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; SearchCommand &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; saralCommand;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;///&lt;/span&gt; &lt;span style="color: grey;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt;&amp;nbsp; Constructor of view model&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;///&lt;/span&gt; &lt;span style="color: grey;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: grey;"&gt;///&lt;/span&gt; &lt;span style="color: grey;"&gt;&amp;lt;param name="eventAggregator"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; SearchViewModel(&lt;span style="color: #2b91af;"&gt;IEventAggregator&lt;/span&gt; eventAggregator)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.eventAggregator = eventAggregator;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; saralCommand = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SaralCommand&lt;/span&gt;(param =&amp;gt; OnSearch(title), param =&amp;gt; CanSearch());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnSearch(&lt;span style="color: blue;"&gt;object&lt;/span&gt; title)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; searchInputDictionary = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;(1);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchInputDictionary.Add(&lt;span style="color: #a31515;"&gt;"title"&lt;/span&gt;,(&lt;span style="color: blue;"&gt;string&lt;/span&gt;)title);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eventAggregator.GetEvent&amp;lt;&lt;span style="color: #2b91af;"&gt;SearchTopicPropagationEvent&lt;/span&gt;&amp;gt;().Publish(searchInputDictionary);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; CanSearch()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Environment: Visual Studio 2010&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Source code :&amp;nbsp;&lt;a href="https://sites.google.com/site/vivekvision2/SaralCommand.zip?attredirects=0&amp;amp;d=1" id="tujz" title="Download"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-346422289006270203?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/346422289006270203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=346422289006270203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/346422289006270203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/346422289006270203'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/08/simplified-icommand-implementation-in.html' title='Simplified ICommand implementation in WPF MVVM application'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-4312668996240582643</id><published>2010-08-22T01:51:00.001-07:00</published><updated>2010-08-23T05:48:06.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Command'/><category scheme='http://www.blogger.com/atom/ns#' term='Prism'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Saral'/><title type='text'>Different approaches for Commands/Command Logic while implementing Prism &amp; MVVM in WPF</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;/div&gt;MVVM enforces empty code behind files, except the standard code that calls InitializeComponent inside the constructor. Even if you remove code behind file from the project still it will compile and run correctly.&lt;br /&gt;Even without having event handler in the code behind application can be made to react on the user interaction events. It can be done by binding ICommand object exposed by ViewModel layer with UI controls. Command is an object that makes it easy to consume ViewModel’s functionality from the view declared in XAML.&lt;br /&gt;&lt;br /&gt;Usually ViewModel has to expose a property of type ICommand. This command property is usually initialized in the constructor of ViewModel.&lt;br /&gt;&lt;br /&gt;For example – &amp;nbsp;Following code has been taken from one of my previous blog post on &lt;a href="http://technovivek.blogspot.com/2010/03/prism-for-navigation-in-wpf-application.html"&gt;Navigation in Prism with MVVM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;NavigatorViewModel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IEventAggregator&lt;/span&gt; eventAggregator;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; navigateToRevenueCommand;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; navigateToSalesCommand;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; activeWorkspace;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; NavigatorViewModel(&lt;span style="color: #2b91af;"&gt;IEventAggregator&lt;/span&gt; eventAggregator)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.eventAggregator = eventAggregator;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.activeWorkspace = &lt;span style="color: #a31515;"&gt;"Revenue"&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.navigateToRevenueCommand = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;NavigateToRevenueCommand&lt;/span&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.navigateToSalesCommand = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;NavigateToSalesCommand&lt;/span&gt;(&lt;span style="color: blue;"&gt;this&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; NavigateToRevenue &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; navigateToRevenueCommand;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; navigateToRevenueCommand = &lt;span style="color: blue;"&gt;value&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; NavigateToSales&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; navigateToSalesCommand;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; navigateToSalesCommand = &lt;span style="color: blue;"&gt;value&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; ActiveWorkspace&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; activeWorkspace;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activeWorkspace = &lt;span style="color: blue;"&gt;value&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IEventAggregator&lt;/span&gt; EventAggregator&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; eventAggregator;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eventAggregator = &lt;span style="color: blue;"&gt;value&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This class exposes ICommand property which has been instantiated inside the constructor of the class. &lt;br /&gt;Even it can be injected or can have private class to implement the ICommand Interface. But it becomes difficult if you have too many commands in your ViewModel class. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/cc707890"&gt;Microsoft Composite Application Library&lt;/a&gt; introduces &lt;a href="http://msdn.microsoft.com/en-US/library/cc707896"&gt;DelegateCommand&lt;/a&gt; which can be used for command implementation within the module.&lt;br /&gt;&lt;br /&gt;Recently I have designed a class to simplify the Command implementation by generalizing it I have created &lt;b&gt;SaralCommand&lt;/b&gt; as part of &lt;a href="http://saral.codeplex.com/"&gt;Saral&lt;/a&gt; Framework hosted on Codeplex.com&lt;br /&gt;I will describe it in my next blog post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-4312668996240582643?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/4312668996240582643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=4312668996240582643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/4312668996240582643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/4312668996240582643'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/08/different-approaches-for.html' title='Different approaches for Commands/Command Logic while implementing Prism &amp; MVVM in WPF'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-888417574631197531</id><published>2010-08-20T20:53:00.001-07:00</published><updated>2010-08-20T20:54:52.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Working with DataSet in WPF application implementing MVVM Design</title><content type='html'>&lt;div style="text-align: left;"&gt;Though its recommended to use Data Classes with Observable Collection or Binding List for the Data binding in the WPF application however it is quite easy to work with DataSet for the Data binding. At the same time MVVM design pattern can be implemented.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Environment: Visual Studio 2010&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Source Code : &lt;a href="https://sites.google.com/site/vivekvision2/DataSetWPFMVVMApp.zip?attredirects=0&amp;amp;d=1" id="p_o-" title="Download"&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;ModelView Layer:&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private DataView testDataVM;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public DataView TestDataVM&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get { return testDataVM; }&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testDataVM = value;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InvokePropertyChanged("TestDataVM");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Model Layer:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/b&gt;DataTable dataTable = new DataTable();&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&amp;nbsp; // Initialize the dataTable with DataSet retrieved from the Database&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataView testDataView = dataTable.DefaultView;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public DataView TestDataView&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get { return testDataView; }&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;testDataView = value;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;InvokePropertyChanged("TestDataView");&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="u51t" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfcbn3xb_36frg4skc3_b" style="height: 354px; width: 527px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Source Code :&amp;nbsp;&lt;a href="https://sites.google.com/site/vivekvision2/DataSetWPFMVVMApp.zip?attredirects=0&amp;amp;d=1" id="qcxd" title="Download"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-888417574631197531?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/888417574631197531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=888417574631197531' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/888417574631197531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/888417574631197531'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/08/working-with-dataset-in-wpf-application.html' title='Working with DataSet in WPF application implementing MVVM Design'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-6522665898547488075</id><published>2010-08-15T01:43:00.001-07:00</published><updated>2010-08-15T01:48:22.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Data Model'/><title type='text'>Entity Data Model / EDM Example applicaiton in WPF</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This blog post explains the an example application to demonstrate the ADO.NET Entity Data Model.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Development Environment : &amp;nbsp;Visual Studio 2010&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Download : &lt;a href="https://sites.google.com/site/vivekvision2/SchoolEntity.zip?attredirects=0&amp;amp;d=1"&gt;Source Code&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: #333333;"&gt;The EDM wizard &amp;nbsp;of Visual Studio helps generate the base entity model, which can be modified later as per the need.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div id="otd-" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfcbn3xb_31ckdp25f2_b" style="height: 336.393px; width: 648px;" /&gt;&lt;/div&gt;&lt;div id="inhg" style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="h-ns" style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="q476" style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="u0xs" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfcbn3xb_32c969pkcd_b" style="height: 509.075px; width: 648px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="n811" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dfcbn3xb_33hfht6td8_b" style="height: 298px; width: 318px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;SchoolEntities entities = new SchoolEntities();&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; var q = from c in entities.Departments&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select c;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;List&amp;lt;Department&amp;gt; departmentList = q.ToList&amp;lt;Department&amp;gt;();&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-6522665898547488075?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/6522665898547488075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=6522665898547488075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/6522665898547488075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/6522665898547488075'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/08/entity-data-model-edm-example.html' title='Entity Data Model / EDM Example applicaiton in WPF'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-2413768655223646574</id><published>2010-08-09T05:11:00.000-07:00</published><updated>2010-08-09T05:14:50.863-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Saral'/><title type='text'>Display Message Box and File Open/ Save Dialog Box in MVVM design pattern based application</title><content type='html'>&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;MVVM design pattern discourages code behind and introduces command based processing. It comes with whole host of advantages but makes tricky to display message box or even file open/save dialog box. This blog post introduces classes that can be used for above said purpose either from ViewModel or Model as per the design of your application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;These classes are part of &lt;a href="http://saral.codeplex.com/"&gt;Saral&lt;/a&gt; Framework that I have&amp;nbsp;hosted recently on CodePlex. The vision behind Saral framework is to put together the entire infrastructure required to perform most common tasks while working with MVVM based Silverlight/WPF application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I have just posted the initial version of this Framework which provides infrastructure to display ShowMessage(), OpenFileDialog() and SaveFileDialog() from Model or ViewModel layer of MVVM based Silverlight/WPF application. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Infrastructure for ShowMessage() message box:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2Zx4ksitx0U/TF_wJuEzdyI/AAAAAAAAA54/BE-aorOVhrA/s1600/MessageDisplay.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" src="http://3.bp.blogspot.com/_2Zx4ksitx0U/TF_wJuEzdyI/AAAAAAAAA54/BE-aorOVhrA/s320/MessageDisplay.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Infrastructure for File Open/Save Dialog:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2Zx4ksitx0U/TF_wWVoVPEI/AAAAAAAAA6A/dM-Gi1V1Oqs/s1600/FileDialogDisplay.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" src="http://4.bp.blogspot.com/_2Zx4ksitx0U/TF_wWVoVPEI/AAAAAAAAA6A/dM-Gi1V1Oqs/s320/FileDialogDisplay.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Download link: &lt;a href="http://saral.codeplex.com/releases/view/50302"&gt;Source code&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;I will post an example application in next blog post.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-2413768655223646574?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/2413768655223646574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=2413768655223646574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2413768655223646574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2413768655223646574'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/08/display-message-box-and-file-open-save.html' title='Display Message Box and File Open/ Save Dialog Box in MVVM design pattern based application'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2Zx4ksitx0U/TF_wJuEzdyI/AAAAAAAAA54/BE-aorOVhrA/s72-c/MessageDisplay.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-5167142950605734459</id><published>2010-07-31T00:43:00.001-07:00</published><updated>2010-07-31T00:49:48.055-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Prism'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>WPF Demonstration application using PRISM and MVVM</title><content type='html'>&lt;div id="cc3w0"&gt;&lt;/div&gt;&lt;div style="background-color: transparent; font-family: 'Times New Roman'; margin-left: 0px; margin-right: 0px;"&gt;&lt;span id="yza4" style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Source Code &lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/PrismWithMVVMSampleApp.zip?attredirects=0&amp;amp;d=1" id="q6wr" title="Soure Code Download"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Download&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This blog post presents a demonstration/sample application to explain WPF application development using PRISM (Composite application Block) with MVVM design pattern. PRISM facilitates the development of individual modules with or without any design pattern. In fact it is up to architect to make a choice between MVP &amp;amp; MVVM design pattern.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br class="kix-line-break" /&gt;The sample application provided with PRISM library is based on MVP design pattern. &amp;nbsp;As in MVP design pattern Presenter has a reference to View which many architect including me don’t like. There are not many sample application available to demonstrate the PRISM modules using MVVM design pattern. Over the last weekend I decided, It worth to demonstrate PRISM module with MVVM design pattern. I choose a very simple task for this demonstration. I have to do a search of RSS feed using REST based URL provided by Google.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This sample demonstration application covers following&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; concepts:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br class="kix-line-break" /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; - Development of WPF PRISM modules using MVVM Design pattern &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;- Passing multiple parameter/values from one Module to another to facilitate interaction&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;- Demonstration of Boolean to Visibility enumerator converter &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Environment :&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br class="kix-line-break" /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Microsoft Visual C# 2010 Express Edition&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Composite Application Guidance Library for WPF &amp;nbsp;- May 2010&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span class="Apple-style-span" style="clear: left; float: left; font-family: Verdana, sans-serif; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img height="138" src="https://lh6.googleusercontent.com/IBajJ2WDjQZCOSjeClFe7WI6_gM3C3F2f0lYYqCZFDjIn0KwX_d_4wOkcD8KupCBPD0YZKQpgiOZqWhnRHACKbsy6jY2TUAgSHpwIy8D3NQn7lT16w" width="320" /&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Application Design:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br class="kix-line-break" /&gt; The Prism Shell has two regions, Search Region and &amp;nbsp;Result Region respectively as shown in figure below. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Both regions are developed as separate Modules in separate visual studio project part of single visual studio solution. As shown in snapshot below Modules.SearchPanel and Modules.SearchResultPanel are visual studio projects for Prism Modules.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-left: 0px; margin-right: 0px;"&gt;&lt;span class="Apple-style-span" style="clear: left; float: left; font-family: Verdana, sans-serif; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img height="268" src="https://lh6.googleusercontent.com/Xy2Ub-g0MATcwcYj5u0XTTTo5Da1g6cy6DyjJw-LWzR7ocgGLKvhZjmn5-gase5q3-DzsltZ4nG_TTiGpfTkY83BLdoYGeArdtwbzWigE5mbwOK4LA" width="320" /&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br class="kix-line-break" /&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img height="163px;" src="https://lh5.googleusercontent.com/kIrjZ5fNvh6I1fh-2rife7sE7p3_LhiuoepJQm025qGE8r6Ah8imIJj7Ww5mnItfIwAIeeo2Q-UFRn15JnFHyo1iM_KQvwTtdkCoLpYURiLGC_QrgA" width="362px;" /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;The &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Infra &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;layer provides the even necessary wiring even to facilitate interaction between the two modules SeachPanel and SearchResultPanel respectively.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Infra layer has an even derived from &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;CompositePresentationEvent &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;which facilitates the propagation of Dictionary and hence multiple parameter/values from one module to another module.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;SearchTopicPropagationEvent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt; : &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;CompositePresentationEvent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;IDictionary&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img height="266" src="https://lh5.googleusercontent.com/P1tL2LiX1ZJysw7Ke4Ds_CPEkOggWWj_aFil-TTce0HTDM4VmLmVaUqAXO0q7EKIVqzgCfVAuUTOzMfLEcFI2GaqOlS1pwPPW8uPguvsIBq-T_R_tA" width="320" /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img height="264" src="https://lh6.googleusercontent.com/ySCiTmkLUdDlSCdfdVcL7HUWezPFMAGy0oVzn7VdrekAQUHqf8uugjhve1YSThRpYRzVYo10iFvBGOgdVDC_NQ_6Ae_VnWNTpaDkTZvwPNeHTWXeaA" width="320" /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Source Code&amp;nbsp;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/PrismWithMVVMSampleApp.zip?attredirects=0&amp;amp;d=1" id="v1_-" title="Soure Code Download"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Download&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-5167142950605734459?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/5167142950605734459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=5167142950605734459' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5167142950605734459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5167142950605734459'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/07/wpf-demonstration-application-using.html' title='WPF Demonstration application using PRISM and MVVM'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-5725065398117112736</id><published>2010-04-08T23:08:00.001-07:00</published><updated>2010-04-08T23:09:58.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Filp'/><title type='text'>Silverlight Flip window made of standard controls</title><content type='html'>&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;This post explains &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;the making of Flip window in Silverlight using standard controls.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Source &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;code:&lt;/span&gt;&lt;/span&gt; &lt;a href="http://sites.google.com/site/vivekvision2/FlipWindowTest.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Development Environment:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;- Microsoft Visual Web Developer 2008 Express Edition &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;- Microsoft Silverlight 3 SDK&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Test application has a test page (MainPage.xaml) which hosts the Flip window. User can flip the visible area on flip window either downward or upward based on initial state. At page load the default state is up flip is invisible.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="214" src="http://docs.google.com/File?id=dfcbn3xb_21dd7g9tfb_b" style="border: none;" width="207" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;The down flip at the time of initial page load&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt; :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="314" src="http://docs.google.com/File?id=dfcbn3xb_22cmjk7kgx_b" style="border: none;" width="313" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Down flip on mouse over:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="319" src="http://docs.google.com/File?id=dfcbn3xb_23ck5jz7cm_b" style="border: none;" width="321" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Down flip on mouse pressed /clicked:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="313" src="http://docs.google.com/File?id=dfcbn3xb_24db3w86dw_b" style="border: none;" width="323" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Up flip at the time of initial load initial load:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="318" src="http://docs.google.com/File?id=dfcbn3xb_25dnz273gv_b" style="border: none;" width="332" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Up flip on mouse over:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="323" src="http://docs.google.com/File?id=dfcbn3xb_26ch5zq6dz_b" style="border: none;" width="330" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Up flip on mouse pressed/ clicked:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="315" src="http://docs.google.com/File?id=dfcbn3xb_27dph5qnhh_b" style="border: none;" width="318" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Source &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;code:&lt;/span&gt;&lt;/span&gt; &lt;a href="http://sites.google.com/site/vivekvision2/FlipWindowTest.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-5725065398117112736?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/5725065398117112736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=5725065398117112736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5725065398117112736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5725065398117112736'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/04/silverlight-flip-window-made-of.html' title='Silverlight Flip window made of standard controls'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-8107701754983846159</id><published>2010-02-24T05:45:00.000-08:00</published><updated>2010-03-13T09:48:16.116-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Prism'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Prism for Navigation in WPF Application</title><content type='html'>&lt;div style="margin: 0pt;"&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;/div&gt;&lt;hr /&gt;&amp;nbsp;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;This post explains the use of PRISM in a WPF application to facilitate the navigation from one module to another module&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/TestApp7.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: #990000;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;There are following&amp;nbsp; three UI module which has been hosted in the PRISM shell.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt 0pt 0pt 36pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;-&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Navigation&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt 0pt 0pt 36pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;-&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Revenue&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt 0pt 0pt 36pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;-&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Sales&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;These is another layer/module named Infrastructure which provides &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: small;"&gt;CompositePresentationEvent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;to facilitate interaction between UI modules through &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;EventAggregator&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=301" src="http://docs.google.com/File?id=dfcbn3xb_5hscz94fc_b" width="324" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Infrastructure Module defines &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: small;"&gt;ModuleLoadingService&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;which is responsible for activation of the selected module by calling &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="color: #2b91af;"&gt;&lt;span style="font-size: small;"&gt;IRegion.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: small;"&gt;Activate(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas;"&gt;&lt;span style="font-size: small;"&gt; view)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=311" src="http://docs.google.com/File?id=dfcbn3xb_6grtvbvgp_b" width="514" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Revenue Module is active in the above snapshot. The above two buttons are part of Navigation module. These buttons are wired to commands and hence they are enable or disabled based on the state of command.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=344" src="http://docs.google.com/File?id=dfcbn3xb_7zvcbvjfd_b" width="542" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/TestApp7.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: #990000;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-8107701754983846159?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/8107701754983846159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=8107701754983846159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8107701754983846159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8107701754983846159'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/03/prism-for-navigation-in-wpf-application.html' title='Prism for Navigation in WPF Application'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-5902608178267312575</id><published>2010-02-06T10:04:00.000-08:00</published><updated>2010-04-06T10:07:17.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DataGrid'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><title type='text'>Grouping in Standard Silverlight DataGrid</title><content type='html'>&lt;div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;This post presents a sample application to test the Grouping in &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;standard &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;DataGrid &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;that comes with Silverlight 3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/GroupingInDataGridSL3.zip?attredirects=0"&gt;&lt;span style="color: blue; font-family: Tahoma;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;This post makes use of standard class&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;System.Windows.Data.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;PagedCollectionView&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;This class represents a view for grouping, sorting, filtering and navigating a paged data collection.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;Standard DataGrid that comes with Silverlight&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt; 3 can be bound &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;to the data contained in the object of type &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;System.Windows.Data.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;PagedCollectionView&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;The class &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;System.Windows.Data.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;PagedCollectionView&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;provides many methods to&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt; change&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;view based on the group selection.&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;pagedColletionView.GroupDescriptions.Clear();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;pagedColletionView.GroupDescriptions.Add(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;new&lt;/span&gt;&lt;/span&gt; &lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;PropertyGroupDescription&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;(“&amp;nbsp;&amp;nbsp;&amp;nbsp; grouping_text&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;”));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;As always, as soon as the binding source changes the view of the control changes automatically. The sample code attached with this post does not implements MVVM design pattern however it can be achieved easily.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;In the ViewModal &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;(VM) layer a property of type &lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;System.Windows.Data.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;PagedCollectionView&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;can be exposed which in tearn can be bind to the DataGrid.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;Command can be defined and bind to grouping facilitaor control to change the Grouping on object of type&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #2b91af; font-family: 'Courier New';"&gt;&lt;span style="font-size: small;"&gt;PagedCollectionView&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="" height="435" src="http://docs.google.com/File?id=dfcbn3xb_17hpvvscfr_b" style="border: none;" width="576" /&gt;&lt;img alt="" height="497" src="http://docs.google.com/File?id=dfcbn3xb_183rbzgbgj_b" style="border: none;" width="576" /&gt;&lt;img alt="" height="407" src="http://docs.google.com/File?id=dfcbn3xb_19htg4szch_b" style="border: none;" width="576" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: Tahoma;"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/GroupingInDataGridSL3.zip?attredirects=0"&gt;&lt;span style="color: maroon; font-family: Tahoma;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-5902608178267312575?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/5902608178267312575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=5902608178267312575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5902608178267312575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5902608178267312575'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/04/grouping-in-standard-silverlight.html' title='Grouping in Standard Silverlight DataGrid'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-641411998858803600</id><published>2010-01-07T23:18:00.000-08:00</published><updated>2010-01-07T23:21:04.688-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ListBox'/><category scheme='http://www.blogger.com/atom/ns#' term='MultiTempate'/><category scheme='http://www.blogger.com/atom/ns#' term='Image Gallery'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Image Gallery in Silverlight using List Box</title><content type='html'>&lt;hr /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;This post and sample project available for &lt;a href="http://sites.google.com/site/vivekvision/ImageGalleryListBoxMultiTemplate.zip?attredirects=0&amp;amp;d=1"&gt;download&lt;/a&gt; explains the implementation of Image Gallery in Silverlight&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;A list box can be customized to achieve the Image Gallery having option to view the images in different size based on the selection of view button. In the following post it has been achieved by having multiple data template of items in the list box. The template is assigned at runtime based on the view button selection done by end user.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;In addition to that it uses the wrapping of items in the list box in order to display multiple Gallery images in a row. The width of list box is fixed hence it grows in size vertically.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Following different Data Templates has been created to display images in different size&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ItemTemplate4byN&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ItemTemplate2byN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ItemTemplate1byN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;There are three button for three different view of Gallery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;private void btn4XN_Click(object sender, RoutedEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; galleryListBox.ItemTemplate = (DataTemplate)this.Resources["ItemTemplate4byN"];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; galleryListBox.ItemsSource = itemList;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;private void btn2XN_Click(object sender, RoutedEventArgs e)&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; galleryListBox.ItemTemplate = (DataTemplate)this.Resources["ItemTemplate2byN"];&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; galleryListBox.ItemsSource = itemList;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;private void btn1XN_Click(object sender, RoutedEventArgs e)&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; galleryListBox.ItemTemplate = (DataTemplate)this.Resources["ItemTemplate1byN"];&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; galleryListBox.ItemsSource = itemList;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;lt;&amp;nbsp; ListBox x:Name="galleryListBox" BorderBrush="Transparent" BorderThickness="0"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScrollViewer.HorizontalScrollBarVisibility="Disabled" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScrollViewer.VerticalScrollBarVisibility="Visible"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MouseLeftButtonUp="galleryListBox_MouseLeftButtonUp"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ItemTemplate="{StaticResource ItemTemplate4byN}"&amp;nbsp;&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&amp;nbsp; ListBox.Template&amp;nbsp;&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; ControlTemplate&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; Grid&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;&amp;nbsp; ScrollViewer BorderThickness="0,0,0,0"&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;&amp;nbsp; ItemsPresenter /&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; /&amp;nbsp; ScrollViewer&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; / Grid &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; / ControlTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; / ListBox.Template &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt; ListBox.ItemsPanel &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; ItemsPanelTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; local:WrapPanel Width="Auto" / &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; / ItemsPanelTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt; / ListBox.ItemsPanel &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; / ListBox &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2Zx4ksitx0U/S0bcyl1vvoI/AAAAAAAAA1c/j7zeVd1PXMA/s1600-h/ImageGalleryListBox.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://2.bp.blogspot.com/_2Zx4ksitx0U/S0bcyl1vvoI/AAAAAAAAA1c/j7zeVd1PXMA/s640/ImageGalleryListBox.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Sample project is available for download at following link&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://sites.google.com/site/vivekvision/ImageGalleryListBoxMultiTemplate.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span id="goog_1262935109482"&gt;&lt;/span&gt;Download&lt;span id="goog_1262935109483"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-641411998858803600?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/641411998858803600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=641411998858803600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/641411998858803600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/641411998858803600'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/01/image-gallery-in-silverlight-using-list.html' title='Image Gallery in Silverlight using List Box'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2Zx4ksitx0U/S0bcyl1vvoI/AAAAAAAAA1c/j7zeVd1PXMA/s72-c/ImageGalleryListBox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-1158023751272885991</id><published>2010-01-07T22:16:00.000-08:00</published><updated>2010-01-07T22:18:16.877-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ListBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Wrapping'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Wrapping of items in Silverlight List Box</title><content type='html'>&lt;hr /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Wrapping in Silverlight list box provides much needed way to place multiple items horizontally as well as vertically. It like filling the list box horizontally first before moving to next row. I have a sample application to demonstrate it. Find the download link at the buttom of the post.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&amp;nbsp; ListBox Height="300" Width="170"&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; ListBox.ItemsPanel &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt; ItemsPanelTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;&amp;nbsp; local:WrapPanel Width="Auto" / &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; /&amp;nbsp; ItemsPanelTemplate&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; /&amp;nbsp; ListBox.ItemsPanel&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&amp;nbsp; ListBox.Template&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp;&amp;nbsp; ControlTemplate&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp;&amp;nbsp; Grid&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; ScrollViewer&amp;nbsp;&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; ItemsPresenter&amp;nbsp;&amp;nbsp; /&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; /&amp;nbsp; ScrollViewer&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; /&amp;nbsp; Grid&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp; /&amp;nbsp; ControlTemplate&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&amp;nbsp; /&amp;nbsp; ListBox.Template&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&amp;nbsp; /&amp;nbsp; ListBox&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class WrapPanel : Panel&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static readonly DependencyProperty WrapPanelAttachedDataProperty =&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DependencyProperty.RegisterAttached("WrapPanelAttachedDataProperty", typeof(WrapPanelAttachedData), typeof(WrapPanel), null);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly List&lt;double&gt; rowHeights = new List&lt;double&gt;();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // To maintain the row no. for each item.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private readonly Dictionary&lt;int, int=""&gt; indexRowMapping = new Dictionary&lt;int, int=""&gt;();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public double GetOffsetFromTop(int indexOfItem)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double offset = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!this.indexRowMapping.ContainsKey(indexOfItem))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the row no. for the given item.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rowNo = this.indexRowMapping[indexOfItem];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If row no. is 0 then offset would be 0.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rowNo == 0)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Add the height of the rows which are before the row of the given element.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int index = rowNo - 1; index &amp;gt;= 0; index--)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; offset += this.rowHeights[index];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return offset;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override Size MeasureOverride(Size availableSize)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (FrameworkElement child in this.Children)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;child.Measure(availableSize);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double rowHeight = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int row = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int elementNo = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.rowHeights.Clear();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.indexRowMapping.Clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size desiredSize = Size.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point nextChildPosition = new Point(0, 0);&lt;br /&gt;&lt;br /&gt;foreach (FrameworkElement child in this.Children)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nextChildPosition.X + child.DesiredSize.Width &amp;gt; availableSize.Width)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.rowHeights.Add(rowHeight);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++row;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nextChildPosition.X = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;nextChildPosition.Y += rowHeight;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rowHeight = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Insert the index of the item and the row no.&lt;br /&gt;&lt;br /&gt;this.indexRowMapping.Add(elementNo, row);&lt;br /&gt;&lt;br /&gt;elementNo++;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WrapPanelAttachedData data = GetWrapPanelAttachedData(child);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (data.TargetPosition != nextChildPosition)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;data.TargetPosition = nextChildPosition;&lt;br /&gt;&lt;br /&gt;data.Row = row;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;desiredSize.Width = Math.Max(desiredSize.Width, nextChildPosition.X + child.DesiredSize.Width);&lt;br /&gt;&lt;br /&gt;desiredSize.Height = Math.Max(desiredSize.Height, nextChildPosition.Y + child.DesiredSize.Height);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rowHeight = Math.Max(rowHeight, child.DesiredSize.Height);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;nextChildPosition.X += child.DesiredSize.Width;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;this.rowHeights.Add(rowHeight);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;return desiredSize;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;protected override Size ArrangeOverride(Size finalSize)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;foreach (UIElement child in this.Children)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;WrapPanelAttachedData data = GetWrapPanelAttachedData(child);&lt;br /&gt;&lt;br /&gt;child.Arrange(new Rect(data.TargetPosition.X, data.TargetPosition.Y, child.DesiredSize.Width, this.rowHeights[data.Row]));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;return finalSize;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static WrapPanelAttachedData GetWrapPanelAttachedData(DependencyObject obj)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;object value = obj.GetValue(WrapPanelAttachedDataProperty);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (value == null)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;WrapPanelAttachedData data = new WrapPanelAttachedData();&lt;br /&gt;&lt;br /&gt;SetAnimatedWrapPanelAttachedData(obj, data);&lt;br /&gt;&lt;br /&gt;return data;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;return (WrapPanelAttachedData)value;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static void SetAnimatedWrapPanelAttachedData(DependencyObject obj, WrapPanelAttachedData value)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;obj.SetValue(WrapPanelAttachedDataProperty, value);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private class WrapPanelAttachedData&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public static readonly Point Unset = new Point(-1, -1);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public WrapPanelAttachedData()&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.TargetPosition = Unset;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Point TargetPosition { get; set; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public int Row { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2Zx4ksitx0U/S0bNRg-Oc0I/AAAAAAAAA1U/M7nDLCrjjy8/s1600-h/ListBoxWraping.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://1.bp.blogspot.com/_2Zx4ksitx0U/S0bNRg-Oc0I/AAAAAAAAA1U/M7nDLCrjjy8/s320/ListBoxWraping.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;A Sample project is available for download at following link&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;a href="http://sites.google.com/site/vivekvision/ListBoxWraping.zip?attredirects=0&amp;amp;d=1"&gt;Download&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-1158023751272885991?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/1158023751272885991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=1158023751272885991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1158023751272885991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1158023751272885991'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/01/wrapping-of-items-in-silverlight-list.html' title='Wrapping of items in Silverlight List Box'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2Zx4ksitx0U/S0bNRg-Oc0I/AAAAAAAAA1U/M7nDLCrjjy8/s72-c/ListBoxWraping.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-5367187880858383992</id><published>2010-01-07T05:40:00.000-08:00</published><updated>2010-01-07T05:41:03.648-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ListBox'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Multiple Template ListBox in Silverlight</title><content type='html'>&lt;hr /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;List box can have multiple item templates. If a list need to have items with different behaviour can be achieved using the multiple list box item template. For example you have list of vehicles available for rent. This list can have Cars, Bike etc. Now every different types of vehicle have diffident attributes to be displayed. This requirement can be achieved using the Multi Template List box.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public class LayoutViewListBox : ListBox&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public static readonly DependencyProperty TemplateSelectorProperty = DependencyProperty.Register("TemplateSelector", typeof(DataTemplateSelector), typeof(LayoutViewListBox), new PropertyMetadata(new PropertyChangedCallback(OnTemplateChanged)));&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public DataTemplateSelector ItemTemplateSelector&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; get { return (DataTemplateSelector)this.GetValue(TemplateSelectorProperty); }&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;set { this.SetValue(TemplateSelectorProperty, value); }&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;protected override void PrepareContainerForItemOverride&amp;nbsp; (DependencyObject element, object item)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; base.PrepareContainerForItemOverride(element, item);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; ListBoxItem listBoxItem = element as ListBoxItem;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (listBoxItem != null)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; listBoxItem.ContentTemplate =&amp;nbsp;&amp;nbsp; this.ItemTemplateSelector.SelectTemplate(item, this);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;private static void OnTemplateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Create a derived list box class and register a dependency property “TempateSelectorProperty”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public class DataTemplateSelector&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public virtual DataTemplate SelectTemplate(object item, DependencyObject container)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; return null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Create a class for DataTemplete selection and provide the implementation for template selection based on the value at runtime data binding.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;public class LayoutViewTemplateSelector : DataTemplateSelector&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; public DataTemplate CarViewTemplate { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; public DataTemplate BikeViewTemplate { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; public override DataTemplate SelectTemplate(object item, DependencyObject container)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (item != null)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (item is CarViewClass)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return this.CarViewTemplate;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;if (item is BikeViewClass)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return this.BikeViewTemplate;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp; return null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2Zx4ksitx0U/S0Xj_mG7eMI/AAAAAAAAA1M/C7rPSa2_Qns/s1600-h/Multiple+Template+ListBox.jpg" imageanchor="1" style="cssfloat: left; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://1.bp.blogspot.com/_2Zx4ksitx0U/S0Xj_mG7eMI/AAAAAAAAA1M/C7rPSa2_Qns/s400/Multiple+Template+ListBox.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Source code can be downloaded at following link&lt;/span&gt; &lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://sites.google.com/site/vivekvision/CarAndBikeListBox.zip?attredirects=0&amp;amp;d=1"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Vivek Kumar&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-5367187880858383992?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/5367187880858383992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=5367187880858383992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5367187880858383992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5367187880858383992'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/01/multiple-template-listbox-in.html' title='Multiple Template ListBox in Silverlight'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2Zx4ksitx0U/S0Xj_mG7eMI/AAAAAAAAA1M/C7rPSa2_Qns/s72-c/Multiple+Template+ListBox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-8889438795054566250</id><published>2009-12-24T00:49:00.000-08:00</published><updated>2010-01-07T05:41:49.685-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Coverflow'/><title type='text'>Simplified cover flow to display images</title><content type='html'>&lt;hr /&gt;This post uses the control library named &lt;a href="http://silverlightcoverflow.codeplex.com/"&gt;Silverlight Coverflow&lt;/a&gt;&amp;nbsp; hosted on codeplex.com &lt;br /&gt;Attached sample project has some local image resources which is bind with the coverflow control.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; c : CoverFlowControl Height="500" Margin="0,30,0,0" x:Name="flowControl" BorderBrush="Green" BorderThickness="1,1,1,1" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; c:CoverFlowControl.ItemTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; DataTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; Image Source="{Binding ImageUrl}" CacheMode="BitmapCache" Height="150" Width="180" / &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; / DataTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; / c:CoverFlowControl.ItemTemplate &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt; / c:CoverFlowControl &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_2Zx4ksitx0U/SzMrqugcdaI/AAAAAAAAA1E/k6nT44LdqzM/s1600-h/SimpleSilverlightCoverFlow.Jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://4.bp.blogspot.com/_2Zx4ksitx0U/SzMrqugcdaI/AAAAAAAAA1E/k6nT44LdqzM/s400/SimpleSilverlightCoverFlow.Jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You need to modify the ItemTemplate of CoverFlowControl. In addition to Image, other control can also be included like TextBlock to display the Title or any other information about the image.&lt;br /&gt;&lt;br /&gt;These images can be moved like Apple QuickTime movie trailers in this application. &lt;br /&gt;&lt;br /&gt;Version detail:&lt;br /&gt;&lt;br /&gt;Silverlight 3&lt;br /&gt;&lt;br /&gt;Visual Studio 2008&lt;br /&gt;&lt;br /&gt;Source code can be downloaded at following link&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/vivekvision2/SimpleSilverlightCoverFlow.zip?attredirects=0&amp;amp;d=1"&gt;Download &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Vivek Kumar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-8889438795054566250?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/8889438795054566250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=8889438795054566250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8889438795054566250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8889438795054566250'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2009/12/simplified-cover-flow-to-display-images.html' title='Simplified cover flow to display images'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2Zx4ksitx0U/SzMrqugcdaI/AAAAAAAAA1E/k6nT44LdqzM/s72-c/SimpleSilverlightCoverFlow.Jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-904532822464898642</id><published>2009-12-23T02:06:00.000-08:00</published><updated>2010-01-07T05:42:00.999-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Custom Animation in Silverlight Activity Control</title><content type='html'>&lt;hr /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/03/20/silverlight-3-activity-control.aspx"&gt;Activity Control&lt;/a&gt;&amp;nbsp;(Click for Detail)&amp;nbsp;Provided a much needed way to disable the GUI &amp;amp; indicate the background activity. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.davidpoll.com/?p=73"&gt;Activity Control&lt;/a&gt;&amp;nbsp;(Click for post about Activity Control) can be used with most demanding RIA Silverlight application. But the default look and feel may not be suitable for a professional application. I have tried to customize the appearance of Activity Control in the following post. &lt;a href="http://www.davidpoll.com/Download/ActivityControl9-14.zip"&gt;Activity control &lt;/a&gt;(Click for Source code of Activity Control) uses a typical ResourceDictionary like any other Silverlight control. &lt;br /&gt;&lt;br /&gt;In the Activity Control, I have introduced a WaitDrawingPage.xaml which has definition for wait animation /storyboard.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In place of default progress bar in the generic.xaml of Activity Control, I am hosting the WaitDrawingPage.xaml In the code behind of WaitDrawingPage.xaml the is an event handler LayoutRoot_Loaded () which start the animation by calling Storyboard.Begin() Hence once content of WaitDrawingPage.xaml is loaded animation starts automatically.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_2Zx4ksitx0U/SzHrgCKi4rI/AAAAAAAAA08/CpdVTWVH4Fw/s1600-h/ActivityControl.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ps="true" src="http://2.bp.blogspot.com/_2Zx4ksitx0U/SzHrgCKi4rI/AAAAAAAAA08/CpdVTWVH4Fw/s400/ActivityControl.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Source code can be loaded at following &lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/vivekvision2/CustomAnimationInActivityControl.zip?attredirects=0&amp;amp;d=1http://sites.google.com/site/vivekvision2/CustomAnimationInActivityControl.zip?attredirects=0&amp;amp;d=1"&gt;Download Source Code&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-904532822464898642?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/904532822464898642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=904532822464898642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/904532822464898642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/904532822464898642'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2009/12/custom-animation-in-silverlight.html' title='Custom Animation in Silverlight Activity Control'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2Zx4ksitx0U/SzHrgCKi4rI/AAAAAAAAA08/CpdVTWVH4Fw/s72-c/ActivityControl.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-3250485119851654157</id><published>2009-12-13T06:45:00.000-08:00</published><updated>2010-03-13T09:45:40.239-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ListBox'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Coverflow'/><title type='text'>List box as a Cover flow control</title><content type='html'>&lt;div style="margin: 0pt;"&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;This sample explains the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;customization of &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ItemTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ItemsPanelTemplate &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;and&amp;nbsp; a custom style for ScrollViewer &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;ScrollViewerStyle&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/ListBoxCoverFlow.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: maroon;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;The list box in the sample uses a wrap panel in the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt; so that &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;contents can be wrapped horizontally. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ListBox.ItemsPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;local&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;WrapPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Width&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Auto"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ListBox.ItemsPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=252" src="http://docs.google.com/File?id=dfcbn3xb_9gkm69gf3_b" width="538" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;ItemTemplate&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt; has been customized to accommodate the Image and other controls.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;DataTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;StackPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Orientation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Vertical"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;Image&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Height&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="130"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Width&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="130"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;Binding&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; ImageUri&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;}"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Image Name...." &amp;gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt 0pt 0pt 36pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;StackPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Orientation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Vertical"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; &lt;/div&gt;&lt;div style="margin: 0pt 0pt 0pt 108pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;VerticalAlignment&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Center"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt 0pt 0pt 108pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;HorizontalAlignment&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Center"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;RadioButton&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Content&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Approve"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;RadioButton&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;RadioButton&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Content&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;="Decline"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;RadioButton&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;StackPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;StackPanel&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;DataTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/ListBoxCoverFlow.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: tahoma;"&gt;&lt;span style="color: maroon;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-3250485119851654157?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/3250485119851654157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=3250485119851654157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3250485119851654157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3250485119851654157'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/03/list-box-as-cover-flow-control.html' title='List box as a Cover flow control'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-753771635044024726</id><published>2009-10-11T03:50:00.000-07:00</published><updated>2010-01-07T05:42:12.166-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Wait indicator cycling animation in Sliverlight</title><content type='html'>&lt;hr /&gt;&lt;div class="MsoNormal"&gt;Silverlight is based on asynchronous interaction with backend. However there are times when user has to wait for data retrieval from backend system. This is very common situation where user has to wait for data to be loaded or work to be completed in the background. There is a need to provide visual display of background activity.&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If the amount of work to be complete in background is small and it completes quickly then may be there is no need to display any special animation to keep user inform about background activity. But its better to provide some kind of animation or suspending the UI interaction till needed background activity completes.&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;city w:st="on"&gt;&lt;place w:st="on"&gt;AJAX&lt;/place&gt;&lt;/city&gt; loader style animation is one of the typical ways to keep user informed about the background activity. In this post I am going to provide a sample silverlight application to emulate &lt;place w:st="on"&gt;&lt;city w:st="on"&gt;AJAX&lt;/city&gt;&lt;/place&gt; style cycling animation in silverlight.&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_2Zx4ksitx0U/StG4bX28DDI/AAAAAAAAAz0/j90_qD1HgB8/s1600-h/Wait+Animation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_2Zx4ksitx0U/StG4bX28DDI/AAAAAAAAAz0/j90_qD1HgB8/s320/Wait+Animation.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_2Zx4ksitx0U/StG5-i-d0tI/AAAAAAAAA0E/-yJph7yOrv0/s1600-h/Loading+Animaiton.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_2Zx4ksitx0U/StG5-i-d0tI/AAAAAAAAA0E/-yJph7yOrv0/s400/Loading+Animaiton.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; mso-ansi-language: EN-IN; mso-bidi-language: AR-SA; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: EN-IN;"&gt;Sample code is available for download.&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This application has been developed with Visual Web Developer 2008 Express Edition and Silverlight 3.0 SDK&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt; mso-ansi-language: EN-IN; mso-bidi-language: AR-SA; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: EN-IN;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;a href="http://vivek.vision.googlepages.com/SilverlightWaitIndicatorAnimation.zip"&gt;Download&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-753771635044024726?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/753771635044024726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=753771635044024726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/753771635044024726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/753771635044024726'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2009/10/wait-indicator-cycling-animation-in.html' title='Wait indicator cycling animation in Sliverlight'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2Zx4ksitx0U/StG4bX28DDI/AAAAAAAAAz0/j90_qD1HgB8/s72-c/Wait+Animation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-5225602877890557081</id><published>2009-09-17T03:43:00.000-07:00</published><updated>2010-03-13T09:47:23.742-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Button'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><category scheme='http://www.blogger.com/atom/ns#' term='Style'/><title type='text'>Next, Previous &amp; Close Button, Left to Right arrow toggling in Bu</title><content type='html'>&lt;div style="margin: 0pt;"&gt;&amp;nbsp; &lt;/div&gt;&lt;hr /&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;This post has sample application with following silverlight button styles.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;Next button&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=33" src="http://docs.google.com/File?id=dfcbn3xb_11f4m8hfg3_b" width="33" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;Previous button&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=39" src="http://docs.google.com/File?id=dfcbn3xb_12gv42b5dj_b" width="24" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;Close button&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=34" src="http://docs.google.com/File?id=dfcbn3xb_13c47q2tfb_b" width="36" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/NextPreviousCloseButton.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;It has following styles that has been applied on buttons&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;PreviousButtonStyle&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;NextButtonStyle&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;CloseButtonStyle&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;These styles define values of common properties in addition to the custom&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;span style="color: #a31515;"&gt;&lt;span style="font-size: x-small;"&gt;ControlTemplate &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;that is responsible for having custom visual tree having desire geometry. These styles are reusable and can be applied to any button.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Left to Right and Right to Left arrow toggling button&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=48" src="http://docs.google.com/File?id=dfcbn3xb_14gbd89z76_b" width="106" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;img alt="height=42" src="http://docs.google.com/File?id=dfcbn3xb_15dqcwfhgw_b" width="79" /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="font-size: small;"&gt;Source code: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://sites.google.com/site/vivekvision2/ButtonRightToLeft.zip?attredirects=0&amp;amp;d=1"&gt;&lt;span style="font-family: 'times new roman';"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;Download&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-5225602877890557081?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/5225602877890557081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=5225602877890557081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5225602877890557081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5225602877890557081'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2010/03/next-previous-close-button-left-to.html' title='Next, Previous &amp;amp; Close Button, Left to Right arrow toggling in Bu'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-2406249297383313500</id><published>2009-07-26T06:26:00.000-07:00</published><updated>2010-01-07T05:42:25.095-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Passing values to Silverlight controls from ASP.NET Hosting page at runtime</title><content type='html'>&lt;div class="MsoNormal"&gt;Silverlight control hosted on an ASP.NET web page can be accessed in the code behind using the ID of Silverlight control.&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;For example the following control.xap has been hosted on the ASP.NET page.&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;lt; div style = "height:100%;" &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;lt; asp:Silverlight ID="SilverlightControl" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;runat="server" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Source="~ / ClientBin / control.xap" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MinimumVersion="2.0.31005.0" &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Width="100%"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Height="100%" / &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&amp;lt; / div &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now it is required to pass some parameters from ASP.NET page to this silver light control at runtime. &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In the page load event handler InitParameters can be initialised with the runtime values of required string values. &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;&lt;span class="Apple-style-span" style="color: #666666; font-family: &amp;quot;Courier New&amp;quot;; font-size: 13px;"&gt;initialize with some value at runtime&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;string value1 =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;string value2 =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;string value3 =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;string value4 =&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;// Now silverlight control can be accessed using the ID of the control &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666; font-family: &amp;quot;Courier New&amp;quot;; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;this.SilverlightControl.InitParameters = "parameter1=" + value1 + ",parameter2=" + value2 + ",parameter3=" + value3 + ",parameter4=" + time; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: #666666;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-2406249297383313500?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/2406249297383313500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=2406249297383313500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2406249297383313500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2406249297383313500'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2009/07/passing-values-to-silverlight-controls.html' title='Passing values to Silverlight controls from ASP.NET Hosting page at runtime'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-3461014859415610206</id><published>2009-05-11T10:06:00.001-07:00</published><updated>2010-01-07T05:42:37.787-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='WebTools'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>SOAP Message Logging in ASP.NET Web Service</title><content type='html'>&lt;hr /&gt;&lt;br /&gt;SOAP Extension facilitates creation of very interesting applications on top of the core SOAP architecture provided by .NET. &amp;nbsp; Logging of SOAP request and response messages can be done using the SOAP Extension classes.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Following Two class need to be created&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;- A class derived from System.Web.Services.Protocols.SoapExtension&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- A class derived from System.Web.Services.Protocols.SoacpExtensionAttribute&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextensionattribute.aspx"&gt;MSDN version of Trace Extension&lt;/a&gt; provides a simplest implementation for Trace Attribute to log SOAP request and response messages. However it has some limitation.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;I found &lt;a href="http://traceextension.codeplex.com/"&gt;TraceExtension on codeplex.com&lt;/a&gt; very useful and easy to use. It provides configuration control using Web.config to turn logging on and off.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;However its difficult to investigate the problem or bug using this log if multiple sessions or clients are accessing web method simultaneously. &amp;nbsp;There is need of having separate logging file for each session from each IP address. &amp;nbsp;&lt;a href="http://traceextension.codeplex.com/"&gt;TraceExtension&lt;/a&gt;&amp;nbsp;cretes separate file name for logging at runtime.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;This can be modified to create file name with session ID and client IP address. &lt;span style="font-family: &amp;quot;courier new&amp;quot;;"&gt;Session ID&lt;/span&gt; and client IP can be retrieved &lt;span style="font-family: &amp;quot;courier new&amp;quot;;"&gt;HttpContext&lt;/span&gt; using following properties respectively. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot;;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span style="color: #444444;"&gt;HttpContext.Current.Session.SessionID&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot;;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span style="color: #444444;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: &amp;quot;courier new&amp;quot;;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span style="color: #444444;"&gt;HttpContext.Current.Request.UserHostAddress&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;But It will work only if TraceExtension.cs file is part of the ASP.NET web service project. Otherwise with &lt;span style="font-family: &amp;quot;courier new&amp;quot;;"&gt;HttpContext&lt;/span&gt;, TraceExtension can not be complied in the separate assembly. This source code file should be placed in the App_Code of the Visual Studio web service poject.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-3461014859415610206?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/3461014859415610206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=3461014859415610206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3461014859415610206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3461014859415610206'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2009/05/soap-message-logging-in-aspnet-web.html' title='SOAP Message Logging in ASP.NET Web Service'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-6113981296027524538</id><published>2009-05-11T09:02:00.000-07:00</published><updated>2010-01-07T05:42:55.466-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#.Net Application'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Vivek Kumar'/><title type='text'>Session specific data handling in ASP.Net Web Services using ThreadStaticAttribute</title><content type='html'>&lt;hr /&gt;&lt;br /&gt;Typically &lt;span style="font-family: courier new;"&gt;ThreadStaticAttribute&lt;/span&gt; is used on a static data member in a class to create a separate variable for each thread executing it. ThreadStaticAttribute prevents from sharing the static data member across the threads accessing the class. A static data member with the &lt;span style="font-family: courier new;"&gt;ThreadStaticAttribute&lt;/span&gt; is not shared across the thread accessing it. Each thread accessing it will have a separate copy of the same data member. In this way &lt;span style="font-family: courier new;"&gt;ThreadStaticAttribute&lt;/span&gt; gives the best of both static and instance.&lt;br /&gt;&lt;br /&gt;Similar behaviour can be emulated in the ASP.Net Web Service class where web methods execute in session specific threads and static data members are shared across sessions. There may be need to have separate copy of static data members for each &lt;span style="font-family: courier new;"&gt;session&lt;/span&gt;. This can be achieved using &lt;span style="font-family: courier new;"&gt;ThreadStaticAttribute&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;TestService.asmx&lt;br /&gt;&lt;br /&gt;[WebService(Namespace = "")]&lt;br /&gt;public class TestService : System.Web.Services.WebService&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;[ThreadStatic]&lt;br /&gt;public static ArrayList list = null;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[WebMethod(EnableSession = true)] &lt;br /&gt;public bool AddToList(string testString)&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;list.Add(testString);&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;catch&lt;br /&gt;{&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[WebMethod(EnableSession = true)]&lt;br /&gt;public string RemoveFromList()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return (list[0].ToString());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Global.asax&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void Session_Start(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;// Code that runs when a new session is started&lt;br /&gt;&lt;br /&gt;TestService.list = new ArrayList();&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-6113981296027524538?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/6113981296027524538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=6113981296027524538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/6113981296027524538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/6113981296027524538'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2009/05/session-specific-data-handling-in.html' title='Session specific data handling in ASP.Net Web Services using ThreadStaticAttribute'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-1331239156451285289</id><published>2008-11-11T05:08:00.000-08:00</published><updated>2008-11-22T00:41:24.690-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Server'/><title type='text'>Run Server Side Java Script on IIS Server</title><content type='html'>&lt;hr /&gt;&lt;div&gt;Web Pages that contain server-side script stored on IIS must be saved with the file extension .asp. The IIS check only pages with .asp extension for server-side script. If server-side script is in the standard .htm or .html file, it will be ignored.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In case of an .asp page, the IIS goes through each line in the page and execute any JavaScript marked for server-side execution before sending the page back to the browser.&lt;br /&gt;&lt;br /&gt;If page is just an .html or .htm file, the IIS will simply sent it back to browser without checks for any script that should be run server-side. If a page doesn't contain server-side script, it's best to save it with an .htm or .html extension rather than an .asp extension, otherwise the server will spend processing time checking for server-side script.&lt;br /&gt;&lt;br /&gt;Default language for Client-side scripting is JavaScript, While inserting client-side JavaScript, It is not necessary to specify that the script language(However it is reccomended)&lt;br /&gt;&lt;br /&gt;In case of server-side scripting in ASP, the default language is VBScript so in order to run server-side Java Script, you must specify the scripting language. In fact it's Jscript, the Microsoft version of JavaScript. Two ways to specify the scripting language:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;&gt; Tags:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#999999;"&gt;&lt;em&gt;&lt; language="JavaScript" runat="server"&gt;&lt;br /&gt;// Server-side JavaScript&lt;br /&gt;&lt;br /&gt;&lt; /script &gt;&lt;br /&gt;&lt;br /&gt;&lt; % and % &gt; Delimiters: &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;It tells the server which language is used for all server-side script  on the current page by adding the following to the very first line of the page:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#999999;"&gt;&lt;em&gt;&lt; %@ language = JavaScript% &gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It has been designed to contain the server directives &amp;amp; its effective for page only.  Variables in the server side script can be accessed directly to the page by adding following&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#999999;"&gt;&lt;em&gt;&lt; %=variable% &gt; &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It should be on the top of the page. Once it has been included in  the page to add server-side script to the page we simply enclose  it in &lt; % and % &gt; which are script delimiters. Server side script is not being hosted in a browser , but is being run by the server and its environment.While writing server-side script, you can't use the window object or the document object or any of the object that the BOM object that a browser makes available; You can use server-related objects and the ASP object model.&lt;br /&gt;Server side script and client side script should be considered as running on separate machines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-1331239156451285289?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/1331239156451285289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=1331239156451285289' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1331239156451285289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/1331239156451285289'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/run-server-side-java-script-on-iis.html' title='Run Server Side Java Script on IIS Server'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-2296418154751017495</id><published>2008-09-28T00:02:00.000-07:00</published><updated>2008-11-25T22:26:02.830-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebTools'/><category scheme='http://www.blogger.com/atom/ns#' term='WebPage'/><title type='text'>Review of free Tools to Measure Web Page Load Time</title><content type='html'>&lt;hr /&gt;&lt;br /&gt; There are few free tools to measure the Web Page load time. From web page optimization point of view the load time of individual components is very important.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.apple.com/safari/download/"&gt;&lt;strong&gt;Web Inspector of Safari Browser&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;Safari Browser provides excellent support for mesurement of loading time. It provides sufficent data about loading of individual page ememnets.It provides details about the manner in which web pages are delivered to web browsers.These details includes the timing, size and identity of each item in a page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_2Zx4ksitx0U/SN9Tgp7EY-I/AAAAAAAAAh4/GEc55mNQW1Q/s1600-h/Safari+Web+Inspector.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5251007511011812322" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 657px; CURSOR: hand; HEIGHT: 387px; TEXT-ALIGN: center" height="296" alt="" src="http://4.bp.blogspot.com/_2Zx4ksitx0U/SN9Tgp7EY-I/AAAAAAAAAh4/GEc55mNQW1Q/s400/Safari+Web+Inspector.jpg" width="534" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Develop menu should be enabled in order to run Web Inspector of Safari Browser.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5251007370352731650" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_2Zx4ksitx0U/SN9TYd7VJgI/AAAAAAAAAhw/tFb4kOiW0ho/s400/Safari+Develop+menu.jpg" border="0" /&gt;&lt;br /&gt;These data can be used to isolate problems and improve performance and user satisfaction.It provides ways to inspact indiviual page elements. It has very friendly and attractive GUI.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Shortcoming: &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Web Inspector does not provides way to generate log. Data captured by Web Inspector can not be saved automatically.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://alphaworks.ibm.com/tech/pagedetailer"&gt;&lt;strong&gt;IBM Page Detailer Basic Version&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;One of the best tool to measure the loading time, size and order of individual components of a web page. It provides data both graphical and tabular views, clearly showing how the page was delivered to the browser.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_2Zx4ksitx0U/SSzrWHGXhZI/AAAAAAAAAjw/tUXuW_px1qc/s1600-h/1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5272848028839413138" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 277px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_2Zx4ksitx0U/SSzrWHGXhZI/AAAAAAAAAjw/tUXuW_px1qc/s400/1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_2Zx4ksitx0U/SSzrrQovoOI/AAAAAAAAAj4/gYK8AVW67mU/s1600-h/2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5272848392176771298" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 366px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_2Zx4ksitx0U/SSzrrQovoOI/AAAAAAAAAj4/gYK8AVW67mU/s400/2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Shortcoming: &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Data generated from this tool can not be saved automatically. Basic version of tool does not provides text log to save data.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3371"&gt;&lt;strong&gt;Firefox Add-on : Load Time Analyzer 1.5&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;Facilitates measurement of web page load time Graphical representation of occurrence of events such as requests for the page, images,scripts and other page elements. It Works with Firefox version 1.5 &amp;amp; 2.0 but does not works with firefox 3.0&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1433"&gt;&lt;strong&gt;Firefox Add-on : Extended Statusbar 1.5.3 &lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;It is a Status bar to display current speed, time and loaded size. It does not provides measurement of individual page elements.It has no advantage over other tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-2296418154751017495?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/2296418154751017495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=2296418154751017495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2296418154751017495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2296418154751017495'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/09/review-of-tools-to-measurement-web-page.html' title='Review of free Tools to Measure Web Page Load Time'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2Zx4ksitx0U/SN9Tgp7EY-I/AAAAAAAAAh4/GEc55mNQW1Q/s72-c/Safari+Web+Inspector.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-8907578476639272908</id><published>2008-09-26T21:46:00.001-07:00</published><updated>2008-11-22T00:09:16.848-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WebTools'/><category scheme='http://www.blogger.com/atom/ns#' term='WebPage'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Review of free C#.NET Library to parse HTML</title><content type='html'>&lt;div class="MsoNormal" align="center" style="text-align:center"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="font-family:Georgia;color:black;"&gt;  &lt;hr size="2" width="100%" align="center"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;It was a hot morning and I was browsing around for some cool stuff to parse the HTML files from C#.Net application. Problem was complex and my requirement was to be able to modify HTML file from C#.Net application. I found many articles, free source code and lot of idea about how to develop such library. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;As always, your responsibilities never allow you to do what you love most. My case was no different. After quick search and analysis on available text and comments from other visitors, I zeroed on two C#.Net libraries. First one was HtmlLegacyParser and another one was Html Agility Pack. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;HTML that has many versions, multiple tools and techniques to work with presents lot of challenges, when it comes to parse, validate modify programmatically. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Dealing with malfunctioned HTML and not throwing error message was my one of the requirement and this is where I found Html Agility Pack a better tool to work with.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style=" ;color:black;"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style=" ;color:black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Html Agility Pack provides sufficient scope for developing application on the top of it without any significant exercise around it. Most of the application developers working around XML are familiar with XPath queries. An XPath query provides a very flexible way to work with DOM.&lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;You are done if you know XPath query statements and looking for similar application development for HTML.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;strong&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Html Agility Pack: Wonderful C#.Net library to parse agile HTML&lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;It’s a C#.Net code that allows user to parse HTML files. It emulates object model provided with System.Xml&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.codeplex.com/htmlagilitypack"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Download link for Html Agility Pack&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;It can be used to fix the page. It provides very flexible DOM that can parse with a bunch of XPath queries. It has not other dependency except standard .Net framework. Library is tolerant to badly structured agile HTML pages. Some typical example can be removing comments from HTML document, scanning and fixing img/src or a/hrefs with a bunch of XPath queries.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/cs/TagBasedHtmlParser.aspx"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Code Project: &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;HtmlLegacyParser&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;br /&gt;It’s a C#.NET windows application that has a class library to parse source code. This class library uses &lt;/span&gt;&lt;a href="http://www.itu.dk/research/c5/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;C5 Generic Collection library&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt; which is not provided and must me downloaded and complied separately.&lt;br /&gt;This application is intended to be used with HTML content retrieved by the .NET WebResponse class. The class library that comes with this application provides rich tag based parsing classes. Class library comes with NUnit testing script.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Disadvantage: &lt;/span&gt;&lt;/strong&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;It has a dependency on &lt;/span&gt;&lt;a href="http://www.itu.dk/research/c5/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;C5 Generic Collection library&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;. Unlike HTML Agility Pack, It does not provide XML DOM model and XPath queries.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); font-weight: bold; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-8907578476639272908?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/8907578476639272908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=8907578476639272908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8907578476639272908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8907578476639272908'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/09/html-agility-pack-wonderful-cnet.html' title='Review of free C#.NET Library to parse HTML'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-8447506044979035692</id><published>2008-06-25T05:52:00.001-07:00</published><updated>2009-08-22T07:02:20.806-07:00</updated><title type='text'>ASP.NET : Managing Configration Data Programmatically</title><content type='html'>Mistake&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-8447506044979035692?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/8447506044979035692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=8447506044979035692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8447506044979035692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8447506044979035692'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/aspnet-managing-configration-data.html' title='ASP.NET : Managing Configration Data Programmatically'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-7048074056510698300</id><published>2008-06-25T05:50:00.000-07:00</published><updated>2009-08-22T07:01:35.250-07:00</updated><title type='text'>How to debug JavaScript in IE</title><content type='html'>&lt;b&gt;mistake&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-7048074056510698300?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/7048074056510698300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=7048074056510698300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/7048074056510698300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/7048074056510698300'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/how-to-debug-javascript-in-ie.html' title='How to debug JavaScript in IE'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-5835210926907182346</id><published>2008-06-20T03:01:00.001-07:00</published><updated>2009-08-22T07:02:39.988-07:00</updated><title type='text'>Web Page Development: Best Practices</title><content type='html'>Mistake&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-5835210926907182346?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/5835210926907182346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=5835210926907182346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5835210926907182346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/5835210926907182346'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/web-page-development-best-practices.html' title='Web Page Development: Best Practices'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-8949909413018158877</id><published>2008-06-20T03:00:00.000-07:00</published><updated>2009-08-22T07:03:09.519-07:00</updated><title type='text'>Java script client for SOAP based Web Services</title><content type='html'>mistake&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-8949909413018158877?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/8949909413018158877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=8949909413018158877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8949909413018158877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/8949909413018158877'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/java-script-client-for-soap-based-web.html' title='Java script client for SOAP based Web Services'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-2390635254112140994</id><published>2008-06-20T02:58:00.000-07:00</published><updated>2009-08-22T07:11:27.653-07:00</updated><title type='text'>The XMLHttpRequest object for AJAX</title><content type='html'>Mistake TO be removed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-2390635254112140994?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/2390635254112140994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=2390635254112140994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2390635254112140994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/2390635254112140994'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/xmlhttprequest-object-for-ajax.html' title='The XMLHttpRequest object for AJAX'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-3333758026999804566</id><published>2008-06-11T04:14:00.000-07:00</published><updated>2009-08-22T07:05:22.331-07:00</updated><title type='text'>Creating Windows Service in .NET</title><content type='html'>Mistake&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-3333758026999804566?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/3333758026999804566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=3333758026999804566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3333758026999804566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3333758026999804566'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/creating-windows-service-in-net.html' title='Creating Windows Service in .NET'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4941796923340518991.post-3777696260125397738</id><published>2008-06-03T23:04:00.000-07:00</published><updated>2009-08-22T07:11:49.814-07:00</updated><title type='text'>Connection oriented protocol versus Web Services</title><content type='html'>Mistake TO Be removed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4941796923340518991-3777696260125397738?l=technovivek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technovivek.blogspot.com/feeds/3777696260125397738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4941796923340518991&amp;postID=3777696260125397738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3777696260125397738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4941796923340518991/posts/default/3777696260125397738'/><link rel='alternate' type='text/html' href='http://technovivek.blogspot.com/2008/06/connection-oriented-protocol-versus.html' title='Connection oriented protocol versus Web Services'/><author><name>Vivek Kumar</name><uri>http://www.blogger.com/profile/15391214493141155953</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
