<?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/'><id>tag:blogger.com,1999:blog-882821950355432699.post8695096937230654019..comments</id><updated>2010-03-10T18:31:32.850+11:00</updated><title type='text'>Comments on Paul Batum: Reacting to the Reactive Framework: Part 5</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.paulbatum.com/feeds/8695096937230654019/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html'/><author><name>Paul</name><uri>http://www.blogger.com/profile/18224234643439645641</uri><email>paul.batum@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-4539278832532751112</id><published>2010-03-10T18:31:32.843+11:00</published><updated>2010-03-10T18:31:32.843+11:00</updated><title type='text'>Hi Tim,

To be honest I'm not sure how you should ...</title><content type='html'>Hi Tim,&lt;br /&gt;&lt;br /&gt;To be honest I&amp;#39;m not sure how you should do it. In the subscribe call, you can basically pass a lambda expression that does whatever you want. This lambda expression could manually update your ListBox, but this goes against the approach that WPF and Silverlight encourage us to take, which is to not bother with manually updating our controls but instead bind them and let them update themselves as necessary via INotifyPropertyChanged. I&amp;#39;ve done barely any WPF and Silverlight development, so I&amp;#39;m really not sure of how we should be using these with Rx. Sorry I couldn&amp;#39;t be of much help.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/4539278832532751112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/4539278832532751112'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1268206292843#c4539278832532751112' title=''/><author><name>Paul</name><uri>http://www.blogger.com/profile/18224234643439645641</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15622167435446684159'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-8875382013687773259</id><published>2010-03-09T06:24:01.714+11:00</published><updated>2010-03-09T06:24:01.714+11:00</updated><title type='text'>I am trying to see how I could use this to listen ...</title><content type='html'>I am trying to see how I could use this to listen to the &amp;quot;PropertyChanged&amp;quot; event of my ViewModel when a specific Property has changed and update the ItemsSource of my ListBox.  Without using BindableLinq I&amp;#39;d like to try this using just Rx.  Is it possible?  The reason I am doing this is because I want to bind the ItemsSource to a sub-set of the data in the ObservableCollection but when any items in that collection change, it needs to be reflected on the UI.&lt;br /&gt;&lt;br /&gt;var propertyChanges = Observable.FromEvent(this.ViewModel, &amp;quot;PropertyChanged&amp;quot;);&lt;br /&gt;   var propertyEvents = from p in propertyChanges&lt;br /&gt;         where p.EventArgs.PropertyName == &amp;quot;MetaData&amp;quot;&lt;br /&gt;         select p;&lt;br /&gt;   propertyEvents.Subscribe( /* What do I put here?? */);&lt;br /&gt;&lt;br /&gt;If there&amp;#39;s a better way and I can just bind my ListBox.ItemsSource directly to an &amp;quot;observable&amp;quot; LINQ query my ViewModel&amp;#39;s ObservableCollection that would be ideal...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/8875382013687773259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/8875382013687773259'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1268076241714#c8875382013687773259' title=''/><author><name>Tim</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-1114976193516400156</id><published>2009-08-16T16:09:01.166+10:00</published><updated>2009-08-16T16:09:01.166+10:00</updated><title type='text'>Good question. As I understand it, the DependencyO...</title><content type='html'>Good question. As I understand it, the DependencyObject pattern is used so that the WPF framework can be notified if ANY relevant property changes. The problem with trying to use IObservable in its stead is that you would need one per property, and somehow WPF would need a way to discover them. I suppose you might be able to replace DependencyObject with some sort of &amp;quot;ObservableObject&amp;quot; but at that point you&amp;#39;re probably not gaining much. Hope that makes sense.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/1114976193516400156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/1114976193516400156'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1250402941166#c1114976193516400156' title=''/><author><name>Paul</name><uri>http://www.blogger.com/profile/18224234643439645641</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15622167435446684159'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-5467410454885789212</id><published>2009-08-10T19:46:51.946+10:00</published><updated>2009-08-10T19:46:51.946+10:00</updated><title type='text'>Would it be possible or make sense to reimplement ...</title><content type='html'>Would it be possible or make sense to reimplement the DependencyObject / DependencyProperty system with IObservable/IObserver?&lt;br /&gt;&lt;br /&gt;I&amp;#39;m asking because I&amp;#39;m currently writing a GUI library for game. The library&amp;#39;s architecture is inspired by WPF.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/5467410454885789212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/5467410454885789212'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249897611946#c5467410454885789212' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-5656299208334792082</id><published>2009-08-09T23:55:25.183+10:00</published><updated>2009-08-09T23:55:25.183+10:00</updated><title type='text'>Many thanks anyway Paul!
Keep exploring this new f...</title><content type='html'>Many thanks anyway Paul!&lt;br /&gt;Keep exploring this new feature, you&amp;#39;re doing a great job! I won&amp;#39;t miss new articles</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/5656299208334792082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/5656299208334792082'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249826125183#c5656299208334792082' title=''/><author><name>Andrea</name><uri>http://www.blogger.com/profile/01107068478042332723</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-92632223096570669</id><published>2009-08-09T02:02:18.027+10:00</published><updated>2009-08-09T02:02:18.027+10:00</updated><title type='text'>Hi Jafar, thanks for stopping by! Cheers for the t...</title><content type='html'>Hi Jafar, thanks for stopping by! Cheers for the tip on Scan, I suspected it worked similar to Aggregate but I didn&amp;#39;t quite understand the distinction, it makes sense now.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m looking forward to reading more great posts on your blog.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/92632223096570669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/92632223096570669'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249747338027#c92632223096570669' title=''/><author><name>Paul</name><uri>http://www.blogger.com/profile/18224234643439645641</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15622167435446684159'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-7679438373460270315</id><published>2009-08-08T16:51:13.474+10:00</published><updated>2009-08-08T16:51:13.474+10:00</updated><title type='text'>Hey Paul,

It's good to see you're studying Rx.  Y...</title><content type='html'>Hey Paul,&lt;br /&gt;&lt;br /&gt;It&amp;#39;s good to see you&amp;#39;re studying Rx.  You&amp;#39;re asking perceptive questions and making astute observations.  Although Rx has only been released for Silverlight someone has modified the assembly to enable it to work with the full framework (Google &amp;quot;Mark WPF Rx framework&amp;quot;).&lt;br /&gt;&lt;br /&gt;I wanted to drop in and mention that you can simplify your code with Rx&amp;#39;s powerful combinators:&lt;br /&gt;&lt;br /&gt;var numberOfClicksIncreased = button1.GetClick().Select(_ =&amp;gt; 1).Scan((x, y) =&amp;gt; x + y);&lt;br /&gt;numberOfClicksIncreased.Subscribe(numberOfClicks =&amp;gt; Debug.Write(numberOfClicks));&lt;br /&gt;&lt;br /&gt;Scan works the same way Aggregate does, but returns the intermediary computations.  For example new[]{1,2,3}.Aggregate((x,y) =&amp;gt; x + y) returns 6, whereas new[]{1,2,3}.Scan((x,y) =&amp;gt; x + y) returns 1, 3, 6.&lt;br /&gt;&lt;br /&gt;The trick with Rx (and Linq to objects) is to keep refining your query until it returns _exactly_ the data you need.  Only when you iterate over your query (using Subscribe or foreach) should you perform a stateful action like update the UI.&lt;br /&gt;&lt;br /&gt;Keep up the good work. Mastering Rx and Linq is a lot like learning a martial art.  It requires discipline but it can make you an incredibly powerful developer.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/7679438373460270315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/7679438373460270315'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249714273474#c7679438373460270315' title=''/><author><name>Jafar Husain</name><uri>http://themechanicalbride.blogspot.com</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-7531467818031175369</id><published>2009-08-06T20:24:50.881+10:00</published><updated>2009-08-06T20:24:50.881+10:00</updated><title type='text'>Hi Andrea,

I'm actually very new to silverlight d...</title><content type='html'>Hi Andrea,&lt;br /&gt;&lt;br /&gt;I&amp;#39;m actually very new to silverlight development, so I&amp;#39;m afraid I cannot offer you any advice on your problem. However I would suggest you avoiding using the reactive framework to solve your problems at this point in time because it has not yet had an official release and there is no documentation.&lt;br /&gt;&lt;br /&gt;You should try posting a more detailed explanation of your problem on www.stackoverflow.com - good luck!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/7531467818031175369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/7531467818031175369'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249554290881#c7531467818031175369' title=''/><author><name>Paul</name><uri>http://www.blogger.com/profile/18224234643439645641</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15622167435446684159'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-5700219208712647261</id><published>2009-08-05T23:54:06.661+10:00</published><updated>2009-08-05T23:54:06.661+10:00</updated><title type='text'>Hi Paul,
I've got a listbox databound to a collect...</title><content type='html'>Hi Paul,&lt;br /&gt;I&amp;#39;ve got a listbox databound to a collection.&lt;br /&gt;&lt;br /&gt;Each listbox item must retrieve an image server side shrinked on the fly on an asp.net site where a proper WCF service is used.&lt;br /&gt;&lt;br /&gt;I guess I have to call an asynchronous metod like GetResizedImageAsynch on each ListBoxItem Loaded event....&lt;br /&gt;&lt;br /&gt;...and then to set the image datasource in a callback function.&lt;br /&gt;&lt;br /&gt;Is that right? Are there concurrency problems like the ones one meets calling WebClient.DownloadStringAsync so we need to define an UserState?&lt;br /&gt;&lt;br /&gt;In that case, is it possible to use TADAAA The Reactive Framework I&amp;#39;m just trying to Understand&lt;br /&gt;or am I saying a lot of garbage? :)&lt;br /&gt;Thank you a lot.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/5700219208712647261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/5700219208712647261'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249480446661#c5700219208712647261' title=''/><author><name>Andrea</name><uri>http://www.blogger.com/profile/01107068478042332723</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-2364898561316961331</id><published>2009-08-02T11:55:46.240+10:00</published><updated>2009-08-02T11:55:46.240+10:00</updated><title type='text'>Glad to hear it Marcel!</title><content type='html'>Glad to hear it Marcel!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/2364898561316961331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/2364898561316961331'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249178146240#c2364898561316961331' title=''/><author><name>Paul</name><uri>http://www.blogger.com/profile/18224234643439645641</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15622167435446684159'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-882821950355432699.post-502996116487188818</id><published>2009-08-02T07:03:14.155+10:00</published><updated>2009-08-02T07:03:14.155+10:00</updated><title type='text'>I started to implement my own too :) No interest i...</title><content type='html'>I started to implement my own too :) No interest in Silverlight for now, and it&amp;#39;s a very good learning exercise. Thanks for your series, it was a great help with a lot of problems I had.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/502996116487188818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/882821950355432699/8695096937230654019/comments/default/502996116487188818'/><link rel='alternate' type='text/html' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html?showComment=1249160594155#c502996116487188818' title=''/><author><name>Marcel</name><uri>http://www.blogger.com/profile/13951354231483245521</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.paulbatum.com/2009/07/reacting-to-reactive-framework-part-5.html' ref='tag:blogger.com,1999:blog-882821950355432699.post-8695096937230654019' source='http://www.blogger.com/feeds/882821950355432699/posts/default/8695096937230654019' type='text/html'/></entry></feed>