<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>mvvmfoundation Issue Tracker Rss Feed</title><link>http://mvvmfoundation.codeplex.com/WorkItem/List.aspx</link><description>mvvmfoundation Issue Tracker Rss Description</description><item><title>Created Issue: unloading/dealloc usercontrol DataContext [8765]</title><link>http://mvvmfoundation.codeplex.com/workitem/8765</link><description>It would probably be more helpful if i created a demo app and replicated the memory leak. I will try explaining my issue and if that doesnt work ill put together a demo app&lt;br /&gt;1 Window&lt;br /&gt;10 User controls&lt;br /&gt;&lt;br /&gt;Window holds dynamic user controls container.... that is ..... &amp;#60;UserControl Content&amp;#61;&amp;#34;&amp;#123;Binding Path &amp;#61; UserViewControl....&lt;br /&gt;Window also has 10 buttons, each buttons swaps out the windows user control container with a control...&lt;br /&gt;&lt;br /&gt;User controls are loaded into the window&lt;br /&gt;Each user control has its ViewModel that it sets the UserControl.DataContext to. i.e.&lt;br /&gt;&amp;#60;UserControl.DataContext&amp;#62;&lt;br /&gt;        &amp;#60;vm&amp;#58;xViewModel&amp;#62;&amp;#60;&amp;#47;vm&amp;#58;xViewModel&amp;#62;&lt;br /&gt;    &amp;#60;&amp;#47;UserControl.DataContext&amp;#62;&lt;br /&gt;&lt;br /&gt;So whats the problem&amp;#63;&lt;br /&gt;well., I see that if i open up xUserControl which loads xViewModel, i see the program memory increase, then if i navigate to Y, i.e yUserControl which loads yViewModel i get another memory increase.. If i go back to a previously opened view model, it doesnt do increase memory again. most probably because of the autofac&amp;#47;ioc containers being used... &lt;br /&gt;&lt;br /&gt;in a nutshell when i swap out usercontrols in the usercontrol container, it doesnt release the ViewModel that was set in the usercontrols datacontext.... &lt;br /&gt;&lt;br /&gt;I guess i could hook into the Unloaded method for usercontrols... but what&amp;#47;how do i dealloc the datacontext&amp;#63;&lt;br /&gt;&lt;br /&gt;Does my question even make sense&amp;#63;&lt;br /&gt;</description><author>zxed</author><pubDate>Thu, 17 Jun 2010 18:21:12 GMT</pubDate><guid isPermaLink="false">Created Issue: unloading/dealloc usercontrol DataContext [8765] 20100617062112P</guid></item><item><title>Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=6139</link><description>The VerifyPropertyName debugging code fails if used on a static or protected properties.&lt;br /&gt;This changes the test to work for the more general case. &amp;#40;It allows private properties but there isn&amp;#39;t an &amp;#42;easy&amp;#42; way to exclude them.&amp;#41;&lt;br /&gt;&lt;br /&gt;Matt Heffron&lt;br /&gt;&lt;br /&gt;    public void VerifyPropertyName&amp;#40;string propertyName&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;      &amp;#47;&amp;#47; If you raise PropertyChanged and do not specify a property name,&lt;br /&gt;      &amp;#47;&amp;#47; all properties on the object are considered to be changed by the binding system.&lt;br /&gt;      if &amp;#40;String.IsNullOrEmpty&amp;#40;propertyName&amp;#41;&amp;#41;&lt;br /&gt;        return&amp;#59;&lt;br /&gt;&lt;br /&gt;      &amp;#47;&amp;#47; Verify that the property name matches a real property on this object.&lt;br /&gt;      try&lt;br /&gt;      &amp;#123;&lt;br /&gt;        PropertyInfo propertyInfo &amp;#61; this.GetType&amp;#40;&amp;#41;.GetProperty&amp;#40;propertyName,&lt;br /&gt;                                                             BindingFlags.Public &amp;#124; BindingFlags.NonPublic &amp;#124;&lt;br /&gt;                                                             BindingFlags.Static &amp;#124; BindingFlags.Instance &amp;#124;&lt;br /&gt;                                                             BindingFlags.FlattenHierarchy&amp;#41;&amp;#59;&lt;br /&gt;        if &amp;#40;propertyInfo &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;          string msg &amp;#61; &amp;#34;Invalid property name&amp;#58; &amp;#34; &amp;#43; propertyName&amp;#59;&lt;br /&gt;&lt;br /&gt;          if &amp;#40;this.ThrowOnInvalidPropertyName&amp;#41;&lt;br /&gt;            throw new ArgumentException&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;          else&lt;br /&gt;            Debug.Fail&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;      &amp;#125;&lt;br /&gt;      catch &amp;#40;AmbiguousMatchException&amp;#41;&lt;br /&gt;      &amp;#123;&lt;br /&gt;        return&amp;#59;   &amp;#47;&amp;#47; Well...the name &amp;#42;IS&amp;#42; there...&lt;br /&gt;      &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;Comments: ** Comment from web user: MattHeffron ** &lt;p&gt;But the RaisePropertyChanged, at least in my case, does pass an instance of the class as the sender.  &amp;#40;The class is not static, but the property is.&amp;#41;&lt;/p&gt;</description><author>MattHeffron</author><pubDate>Fri, 06 Nov 2009 18:31:55 GMT</pubDate><guid isPermaLink="false">Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139] 20091106063155P</guid></item><item><title>Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=6139</link><description>The VerifyPropertyName debugging code fails if used on a static or protected properties.&lt;br /&gt;This changes the test to work for the more general case. &amp;#40;It allows private properties but there isn&amp;#39;t an &amp;#42;easy&amp;#42; way to exclude them.&amp;#41;&lt;br /&gt;&lt;br /&gt;Matt Heffron&lt;br /&gt;&lt;br /&gt;    public void VerifyPropertyName&amp;#40;string propertyName&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;      &amp;#47;&amp;#47; If you raise PropertyChanged and do not specify a property name,&lt;br /&gt;      &amp;#47;&amp;#47; all properties on the object are considered to be changed by the binding system.&lt;br /&gt;      if &amp;#40;String.IsNullOrEmpty&amp;#40;propertyName&amp;#41;&amp;#41;&lt;br /&gt;        return&amp;#59;&lt;br /&gt;&lt;br /&gt;      &amp;#47;&amp;#47; Verify that the property name matches a real property on this object.&lt;br /&gt;      try&lt;br /&gt;      &amp;#123;&lt;br /&gt;        PropertyInfo propertyInfo &amp;#61; this.GetType&amp;#40;&amp;#41;.GetProperty&amp;#40;propertyName,&lt;br /&gt;                                                             BindingFlags.Public &amp;#124; BindingFlags.NonPublic &amp;#124;&lt;br /&gt;                                                             BindingFlags.Static &amp;#124; BindingFlags.Instance &amp;#124;&lt;br /&gt;                                                             BindingFlags.FlattenHierarchy&amp;#41;&amp;#59;&lt;br /&gt;        if &amp;#40;propertyInfo &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;          string msg &amp;#61; &amp;#34;Invalid property name&amp;#58; &amp;#34; &amp;#43; propertyName&amp;#59;&lt;br /&gt;&lt;br /&gt;          if &amp;#40;this.ThrowOnInvalidPropertyName&amp;#41;&lt;br /&gt;            throw new ArgumentException&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;          else&lt;br /&gt;            Debug.Fail&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;      &amp;#125;&lt;br /&gt;      catch &amp;#40;AmbiguousMatchException&amp;#41;&lt;br /&gt;      &amp;#123;&lt;br /&gt;        return&amp;#59;   &amp;#47;&amp;#47; Well...the name &amp;#42;IS&amp;#42; there...&lt;br /&gt;      &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;On second thought, how would the binding system know which class the property belongs to&amp;#63;  If you were to raise PropertyChanged where e.PropertyName&amp;#61;&amp;#34;FooProperty&amp;#34; and sender&amp;#61;null, how would a binding know which class FooProperty is on&amp;#63;  I&amp;#39;ve never tried this, and am not sure if it would even work.&lt;/p&gt;&lt;p&gt;Josh&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Fri, 06 Nov 2009 16:21:20 GMT</pubDate><guid isPermaLink="false">Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139] 20091106042120P</guid></item><item><title>Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=6139</link><description>The VerifyPropertyName debugging code fails if used on a static or protected properties.&lt;br /&gt;This changes the test to work for the more general case. &amp;#40;It allows private properties but there isn&amp;#39;t an &amp;#42;easy&amp;#42; way to exclude them.&amp;#41;&lt;br /&gt;&lt;br /&gt;Matt Heffron&lt;br /&gt;&lt;br /&gt;    public void VerifyPropertyName&amp;#40;string propertyName&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;      &amp;#47;&amp;#47; If you raise PropertyChanged and do not specify a property name,&lt;br /&gt;      &amp;#47;&amp;#47; all properties on the object are considered to be changed by the binding system.&lt;br /&gt;      if &amp;#40;String.IsNullOrEmpty&amp;#40;propertyName&amp;#41;&amp;#41;&lt;br /&gt;        return&amp;#59;&lt;br /&gt;&lt;br /&gt;      &amp;#47;&amp;#47; Verify that the property name matches a real property on this object.&lt;br /&gt;      try&lt;br /&gt;      &amp;#123;&lt;br /&gt;        PropertyInfo propertyInfo &amp;#61; this.GetType&amp;#40;&amp;#41;.GetProperty&amp;#40;propertyName,&lt;br /&gt;                                                             BindingFlags.Public &amp;#124; BindingFlags.NonPublic &amp;#124;&lt;br /&gt;                                                             BindingFlags.Static &amp;#124; BindingFlags.Instance &amp;#124;&lt;br /&gt;                                                             BindingFlags.FlattenHierarchy&amp;#41;&amp;#59;&lt;br /&gt;        if &amp;#40;propertyInfo &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;          string msg &amp;#61; &amp;#34;Invalid property name&amp;#58; &amp;#34; &amp;#43; propertyName&amp;#59;&lt;br /&gt;&lt;br /&gt;          if &amp;#40;this.ThrowOnInvalidPropertyName&amp;#41;&lt;br /&gt;            throw new ArgumentException&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;          else&lt;br /&gt;            Debug.Fail&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;      &amp;#125;&lt;br /&gt;      catch &amp;#40;AmbiguousMatchException&amp;#41;&lt;br /&gt;      &amp;#123;&lt;br /&gt;        return&amp;#59;   &amp;#47;&amp;#47; Well...the name &amp;#42;IS&amp;#42; there...&lt;br /&gt;      &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;I see what you mean, Matt.  I am thinking of maybe adding a static version of RaisePropertyChanged.  Alternatively, could you have those static collections be ObservableCollections &amp;#40;or ReadOnlyObservableCollections&amp;#41; to get the change notifications you need&amp;#63;  Thanks&amp;#33;&lt;/p&gt;&lt;p&gt;Josh&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Fri, 06 Nov 2009 16:19:01 GMT</pubDate><guid isPermaLink="false">Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139] 20091106041901P</guid></item><item><title>Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=6139</link><description>The VerifyPropertyName debugging code fails if used on a static or protected properties.&lt;br /&gt;This changes the test to work for the more general case. &amp;#40;It allows private properties but there isn&amp;#39;t an &amp;#42;easy&amp;#42; way to exclude them.&amp;#41;&lt;br /&gt;&lt;br /&gt;Matt Heffron&lt;br /&gt;&lt;br /&gt;    public void VerifyPropertyName&amp;#40;string propertyName&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;      &amp;#47;&amp;#47; If you raise PropertyChanged and do not specify a property name,&lt;br /&gt;      &amp;#47;&amp;#47; all properties on the object are considered to be changed by the binding system.&lt;br /&gt;      if &amp;#40;String.IsNullOrEmpty&amp;#40;propertyName&amp;#41;&amp;#41;&lt;br /&gt;        return&amp;#59;&lt;br /&gt;&lt;br /&gt;      &amp;#47;&amp;#47; Verify that the property name matches a real property on this object.&lt;br /&gt;      try&lt;br /&gt;      &amp;#123;&lt;br /&gt;        PropertyInfo propertyInfo &amp;#61; this.GetType&amp;#40;&amp;#41;.GetProperty&amp;#40;propertyName,&lt;br /&gt;                                                             BindingFlags.Public &amp;#124; BindingFlags.NonPublic &amp;#124;&lt;br /&gt;                                                             BindingFlags.Static &amp;#124; BindingFlags.Instance &amp;#124;&lt;br /&gt;                                                             BindingFlags.FlattenHierarchy&amp;#41;&amp;#59;&lt;br /&gt;        if &amp;#40;propertyInfo &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;          string msg &amp;#61; &amp;#34;Invalid property name&amp;#58; &amp;#34; &amp;#43; propertyName&amp;#59;&lt;br /&gt;&lt;br /&gt;          if &amp;#40;this.ThrowOnInvalidPropertyName&amp;#41;&lt;br /&gt;            throw new ArgumentException&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;          else&lt;br /&gt;            Debug.Fail&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;      &amp;#125;&lt;br /&gt;      catch &amp;#40;AmbiguousMatchException&amp;#41;&lt;br /&gt;      &amp;#123;&lt;br /&gt;        return&amp;#59;   &amp;#47;&amp;#47; Well...the name &amp;#42;IS&amp;#42; there...&lt;br /&gt;      &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;Comments: ** Comment from web user: MattHeffron ** &lt;p&gt;I have several ViewModel classes that have static properties exposing &amp;#34;almost constant&amp;#34; collections that I bind to.  &amp;#40;The collection values are constant, but need to be sorted based on the CurrentCulture which can be changed on-the-fly.&amp;#41; I need to be able to RaisePropertyChanged&amp;#40;&amp;#41; on those properties when the CurrentCulture changes so WPF gets the reordered collection.&lt;/p&gt;&lt;p&gt;I&amp;#39;m willing to concede non-public properties as a potential bug. I don&amp;#39;t need them. &amp;#40;I sort-of went overboard with the GetProperty flags.&amp;#41;&lt;/p&gt;</description><author>MattHeffron</author><pubDate>Wed, 04 Nov 2009 20:49:55 GMT</pubDate><guid isPermaLink="false">Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139] 20091104084955P</guid></item><item><title>Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=6139</link><description>The VerifyPropertyName debugging code fails if used on a static or protected properties.&lt;br /&gt;This changes the test to work for the more general case. &amp;#40;It allows private properties but there isn&amp;#39;t an &amp;#42;easy&amp;#42; way to exclude them.&amp;#41;&lt;br /&gt;&lt;br /&gt;Matt Heffron&lt;br /&gt;&lt;br /&gt;    public void VerifyPropertyName&amp;#40;string propertyName&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;      &amp;#47;&amp;#47; If you raise PropertyChanged and do not specify a property name,&lt;br /&gt;      &amp;#47;&amp;#47; all properties on the object are considered to be changed by the binding system.&lt;br /&gt;      if &amp;#40;String.IsNullOrEmpty&amp;#40;propertyName&amp;#41;&amp;#41;&lt;br /&gt;        return&amp;#59;&lt;br /&gt;&lt;br /&gt;      &amp;#47;&amp;#47; Verify that the property name matches a real property on this object.&lt;br /&gt;      try&lt;br /&gt;      &amp;#123;&lt;br /&gt;        PropertyInfo propertyInfo &amp;#61; this.GetType&amp;#40;&amp;#41;.GetProperty&amp;#40;propertyName,&lt;br /&gt;                                                             BindingFlags.Public &amp;#124; BindingFlags.NonPublic &amp;#124;&lt;br /&gt;                                                             BindingFlags.Static &amp;#124; BindingFlags.Instance &amp;#124;&lt;br /&gt;                                                             BindingFlags.FlattenHierarchy&amp;#41;&amp;#59;&lt;br /&gt;        if &amp;#40;propertyInfo &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;          string msg &amp;#61; &amp;#34;Invalid property name&amp;#58; &amp;#34; &amp;#43; propertyName&amp;#59;&lt;br /&gt;&lt;br /&gt;          if &amp;#40;this.ThrowOnInvalidPropertyName&amp;#41;&lt;br /&gt;            throw new ArgumentException&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;          else&lt;br /&gt;            Debug.Fail&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;      &amp;#125;&lt;br /&gt;      catch &amp;#40;AmbiguousMatchException&amp;#41;&lt;br /&gt;      &amp;#123;&lt;br /&gt;        return&amp;#59;   &amp;#47;&amp;#47; Well...the name &amp;#42;IS&amp;#42; there...&lt;br /&gt;      &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;Matt,&lt;/p&gt;&lt;p&gt;Thanks for your feedback.&lt;/p&gt;&lt;p&gt;I had considered adding support for non-public properties, but it presented oddities so I didn&amp;#39;t do it.  I built ObservableObject to make it easy to notify the WPF binding system of property changes.  A Binding can only bind to public properties on an object, so it seemed like a bug to consider a protected&amp;#47;internal&amp;#47;private property as &amp;#34;valid&amp;#34; when raising PropertyChanged.  Suppose I have an object with two properties&amp;#58; PublicProp and ProtectedProp &amp;#40;whose access modifiers are implied by the property names&amp;#41;.  If I accidentally pass &amp;#34;ProtectedProp&amp;#34; to RaisePropertyChanged&amp;#40;&amp;#41; from the PublicProp setter, it would be considered valid.  That might seem like a bug.  Perhaps you can convince me otherwise...&lt;/p&gt;&lt;p&gt;Please explain the static property scenario.  What use case do you have in mind&amp;#63;&lt;/p&gt;&lt;p&gt;Thanks,&lt;br /&gt;Josh&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Wed, 04 Nov 2009 06:08:16 GMT</pubDate><guid isPermaLink="false">Commented Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139] 20091104060816A</guid></item><item><title>Created Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=6139</link><description>The VerifyPropertyName debugging code fails if used on a static or protected properties.&lt;br /&gt;This changes the test to work for the more general case. &amp;#40;It allows private properties but there isn&amp;#39;t an &amp;#42;easy&amp;#42; way to exclude them.&amp;#41;&lt;br /&gt;&lt;br /&gt;Matt Heffron&lt;br /&gt;&lt;br /&gt;    public void VerifyPropertyName&amp;#40;string propertyName&amp;#41;&lt;br /&gt;    &amp;#123;&lt;br /&gt;      &amp;#47;&amp;#47; If you raise PropertyChanged and do not specify a property name,&lt;br /&gt;      &amp;#47;&amp;#47; all properties on the object are considered to be changed by the binding system.&lt;br /&gt;      if &amp;#40;String.IsNullOrEmpty&amp;#40;propertyName&amp;#41;&amp;#41;&lt;br /&gt;        return&amp;#59;&lt;br /&gt;&lt;br /&gt;      &amp;#47;&amp;#47; Verify that the property name matches a real property on this object.&lt;br /&gt;      try&lt;br /&gt;      &amp;#123;&lt;br /&gt;        PropertyInfo propertyInfo &amp;#61; this.GetType&amp;#40;&amp;#41;.GetProperty&amp;#40;propertyName,&lt;br /&gt;                                                             BindingFlags.Public &amp;#124; BindingFlags.NonPublic &amp;#124;&lt;br /&gt;                                                             BindingFlags.Static &amp;#124; BindingFlags.Instance &amp;#124;&lt;br /&gt;                                                             BindingFlags.FlattenHierarchy&amp;#41;&amp;#59;&lt;br /&gt;        if &amp;#40;propertyInfo &amp;#61;&amp;#61; null&amp;#41;&lt;br /&gt;        &amp;#123;&lt;br /&gt;          string msg &amp;#61; &amp;#34;Invalid property name&amp;#58; &amp;#34; &amp;#43; propertyName&amp;#59;&lt;br /&gt;&lt;br /&gt;          if &amp;#40;this.ThrowOnInvalidPropertyName&amp;#41;&lt;br /&gt;            throw new ArgumentException&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;          else&lt;br /&gt;            Debug.Fail&amp;#40;msg&amp;#41;&amp;#59;&lt;br /&gt;        &amp;#125;&lt;br /&gt;      &amp;#125;&lt;br /&gt;      catch &amp;#40;AmbiguousMatchException&amp;#41;&lt;br /&gt;      &amp;#123;&lt;br /&gt;        return&amp;#59;   &amp;#47;&amp;#47; Well...the name &amp;#42;IS&amp;#42; there...&lt;br /&gt;      &amp;#125;&lt;br /&gt;    &amp;#125;&lt;br /&gt;</description><author>MattHeffron</author><pubDate>Wed, 04 Nov 2009 03:57:38 GMT</pubDate><guid isPermaLink="false">Created Issue: ObservableObject.VerifyPropertyName excludes static or protected properties [6139] 20091104035738A</guid></item><item><title>Commented Issue: Unregistering from Messenger [5808]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5808</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I have been using your classes for a while now and I have a question regarding the Messenger class. I your WpfDemoApp, from the NumberChangeLogView constructor, you register like the following&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;If I debug step into Register method and look at the Action object, callback, in Watch list the value is said to be&amp;#58; &amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;My question is&amp;#58; why is it the constructor &amp;#40;ctor&amp;#41; displayed here&amp;#63; Why isn&amp;#39;t it the simply method ScrollToBottom. &lt;br /&gt;The reason of my question&amp;#63; I tried to add an unregister method to your Messenger to be called like the following&amp;#58;&lt;br /&gt;App.Messenger.Unregister&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;That call should retrieve the action registered and remove it from the map list. The problem is, since that call will be made elsewhere than in the constructor, I end up having a different action object which is not equal to the one passed in parameter on registration. So I cannot retrieve the action and unregister it. &lt;br /&gt;&lt;br /&gt;To give an example, in my project I registered a save message from my constructor&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_SAVE,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; this.Save&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;So in the messenger, the action had a value of &amp;#40;in debug window Watch List&amp;#41;&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;And I unregistered from my method OnDispose, and the action came out to be&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;OnDispose&amp;#62;b__2&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;I know you said it is unnecessary to unregister because of weakreferences, but I have a case where I would like to unregister manually so I was wondering what is your thought on it. How can it be implemented&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;I used a lambda expression in my example because I had no need to unregister.  A lambda expression, at the end of the day, is just a delegate &amp;#40;i.e. a strongly typed callback&amp;#41;.&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Thu, 15 Oct 2009 17:27:39 GMT</pubDate><guid isPermaLink="false">Commented Issue: Unregistering from Messenger [5808] 20091015052739P</guid></item><item><title>Commented Issue: Unregistering from Messenger [5808]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5808</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I have been using your classes for a while now and I have a question regarding the Messenger class. I your WpfDemoApp, from the NumberChangeLogView constructor, you register like the following&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;If I debug step into Register method and look at the Action object, callback, in Watch list the value is said to be&amp;#58; &amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;My question is&amp;#58; why is it the constructor &amp;#40;ctor&amp;#41; displayed here&amp;#63; Why isn&amp;#39;t it the simply method ScrollToBottom. &lt;br /&gt;The reason of my question&amp;#63; I tried to add an unregister method to your Messenger to be called like the following&amp;#58;&lt;br /&gt;App.Messenger.Unregister&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;That call should retrieve the action registered and remove it from the map list. The problem is, since that call will be made elsewhere than in the constructor, I end up having a different action object which is not equal to the one passed in parameter on registration. So I cannot retrieve the action and unregister it. &lt;br /&gt;&lt;br /&gt;To give an example, in my project I registered a save message from my constructor&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_SAVE,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; this.Save&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;So in the messenger, the action had a value of &amp;#40;in debug window Watch List&amp;#41;&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;And I unregistered from my method OnDispose, and the action came out to be&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;OnDispose&amp;#62;b__2&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;I know you said it is unnecessary to unregister because of weakreferences, but I have a case where I would like to unregister manually so I was wondering what is your thought on it. How can it be implemented&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: GIJoe ** &lt;p&gt;Little mistake&amp;#58;&lt;/p&gt;&lt;p&gt;Thanks for the answer. It worked. But is there a drawback doing it this way&amp;#63; I mean why did you use lambda expression&amp;#63;&lt;/p&gt;&lt;p&gt;Pascal&lt;/p&gt;</description><author>GIJoe</author><pubDate>Thu, 15 Oct 2009 16:27:28 GMT</pubDate><guid isPermaLink="false">Commented Issue: Unregistering from Messenger [5808] 20091015042728P</guid></item><item><title>Commented Issue: Unregistering from Messenger [5808]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5808</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I have been using your classes for a while now and I have a question regarding the Messenger class. I your WpfDemoApp, from the NumberChangeLogView constructor, you register like the following&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;If I debug step into Register method and look at the Action object, callback, in Watch list the value is said to be&amp;#58; &amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;My question is&amp;#58; why is it the constructor &amp;#40;ctor&amp;#41; displayed here&amp;#63; Why isn&amp;#39;t it the simply method ScrollToBottom. &lt;br /&gt;The reason of my question&amp;#63; I tried to add an unregister method to your Messenger to be called like the following&amp;#58;&lt;br /&gt;App.Messenger.Unregister&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;That call should retrieve the action registered and remove it from the map list. The problem is, since that call will be made elsewhere than in the constructor, I end up having a different action object which is not equal to the one passed in parameter on registration. So I cannot retrieve the action and unregister it. &lt;br /&gt;&lt;br /&gt;To give an example, in my project I registered a save message from my constructor&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_SAVE,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; this.Save&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;So in the messenger, the action had a value of &amp;#40;in debug window Watch List&amp;#41;&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;And I unregistered from my method OnDispose, and the action came out to be&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;OnDispose&amp;#62;b__2&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;I know you said it is unnecessary to unregister because of weakreferences, but I have a case where I would like to unregister manually so I was wondering what is your thought on it. How can it be implemented&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: GIJoe ** &lt;p&gt;Hi Josh,&lt;/p&gt;&lt;p&gt;Thanks for the answer. It worked. But is there a drawback doing it this way&amp;#63; I mean did you use lambda expression&amp;#63;&lt;/p&gt;&lt;p&gt;Pascal&lt;/p&gt;</description><author>GIJoe</author><pubDate>Thu, 15 Oct 2009 16:26:35 GMT</pubDate><guid isPermaLink="false">Commented Issue: Unregistering from Messenger [5808] 20091015042635P</guid></item><item><title>Commented Issue: Unregistering from Messenger [5808]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5808</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I have been using your classes for a while now and I have a question regarding the Messenger class. I your WpfDemoApp, from the NumberChangeLogView constructor, you register like the following&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;If I debug step into Register method and look at the Action object, callback, in Watch list the value is said to be&amp;#58; &amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;My question is&amp;#58; why is it the constructor &amp;#40;ctor&amp;#41; displayed here&amp;#63; Why isn&amp;#39;t it the simply method ScrollToBottom. &lt;br /&gt;The reason of my question&amp;#63; I tried to add an unregister method to your Messenger to be called like the following&amp;#58;&lt;br /&gt;App.Messenger.Unregister&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;That call should retrieve the action registered and remove it from the map list. The problem is, since that call will be made elsewhere than in the constructor, I end up having a different action object which is not equal to the one passed in parameter on registration. So I cannot retrieve the action and unregister it. &lt;br /&gt;&lt;br /&gt;To give an example, in my project I registered a save message from my constructor&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_SAVE,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; this.Save&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;So in the messenger, the action had a value of &amp;#40;in debug window Watch List&amp;#41;&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;And I unregistered from my method OnDispose, and the action came out to be&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;OnDispose&amp;#62;b__2&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;I know you said it is unnecessary to unregister because of weakreferences, but I have a case where I would like to unregister manually so I was wondering what is your thought on it. How can it be implemented&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;The method name is &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125; because the Action object contains a lambda expression as its callback.  That lambda expression is basically turned into a separate method by the compiler, and it is assigned a compiler-generated name.  If you want to unregister a callback, don&amp;#39;t use lambda expressions.  Instead, when creating the Action object, pass in the name of a callback method that you created &amp;#40;so that it doesn&amp;#39;t have a compiler-generated name&amp;#41;.&lt;/p&gt;&lt;p&gt;HTH,&lt;br /&gt;Josh&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Thu, 15 Oct 2009 15:55:07 GMT</pubDate><guid isPermaLink="false">Commented Issue: Unregistering from Messenger [5808] 20091015035507P</guid></item><item><title>Created Issue: Unregistering from Messenger [5808]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5808</link><description>Hi,&lt;br /&gt;&lt;br /&gt;I have been using your classes for a while now and I have a question regarding the Messenger class. I your WpfDemoApp, from the NumberChangeLogView constructor, you register like the following&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;If I debug step into Register method and look at the Action object, callback, in Watch list the value is said to be&amp;#58; &amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;My question is&amp;#58; why is it the constructor &amp;#40;ctor&amp;#41; displayed here&amp;#63; Why isn&amp;#39;t it the simply method ScrollToBottom. &lt;br /&gt;The reason of my question&amp;#63; I tried to add an unregister method to your Messenger to be called like the following&amp;#58;&lt;br /&gt;App.Messenger.Unregister&amp;#40;&lt;br /&gt;                App.MSG_LOG_APPENDED,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; _scrollViewer.ScrollToBottom&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;That call should retrieve the action registered and remove it from the map list. The problem is, since that call will be made elsewhere than in the constructor, I end up having a different action object which is not equal to the one passed in parameter on registration. So I cannot retrieve the action and unregister it. &lt;br /&gt;&lt;br /&gt;To give an example, in my project I registered a save message from my constructor&amp;#58;&lt;br /&gt;App.Messenger.Register&amp;#40;&lt;br /&gt;                App.MSG_SAVE,&lt;br /&gt;                new Action&amp;#40;&amp;#40;&amp;#41; &amp;#61;&amp;#62; this.Save&amp;#40;&amp;#41;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;So in the messenger, the action had a value of &amp;#40;in debug window Watch List&amp;#41;&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;.ctor&amp;#62;b__0&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;And I unregistered from my method OnDispose, and the action came out to be&amp;#58;&lt;br /&gt;&amp;#123;Method &amp;#61; &amp;#123;Void &amp;#60;OnDispose&amp;#62;b__2&amp;#40;&amp;#41;&amp;#125;&amp;#125;&lt;br /&gt;&lt;br /&gt;I know you said it is unnecessary to unregister because of weakreferences, but I have a case where I would like to unregister manually so I was wondering what is your thought on it. How can it be implemented&amp;#63;&lt;br /&gt;</description><author>GIJoe</author><pubDate>Thu, 15 Oct 2009 14:24:49 GMT</pubDate><guid isPermaLink="false">Created Issue: Unregistering from Messenger [5808] 20091015022449P</guid></item><item><title>Commented Issue: ViewModels not being thrown away [5734]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5734</link><description>Hey i cant find a good place to post this, so ill try here first.&lt;br /&gt;Im having a problem with my ViewModels never being GC&amp;#39;ed until the app is shutdown. This is a major issue&amp;#33; Can you pros lend some ideas as to exactly what could be the cause of them never being released&amp;#63; Im using a tabbed style app, where you can open as many Entity tabitems&amp;#40;viewmodels&amp;#41; as you want, and then close them when youre done. The examples Ive seen from disciples they always limit the number of open VMs at once...am I missing something, doing something wrong&amp;#63; Im using Joshs&amp;#47;Marlons Mediator to send out messages, with a static Mediator singleton in my base viewmodel...could that be a culprit&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks&amp;#33;&lt;br /&gt;Justin&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;It could be any number of things in the app.  If you can create a simple demo application that consistently causes a memory leak due to one of the classes in MVVM Foundation, please send it to me and I will investigate.  Otherwise, it&amp;#39;s impossible for me to even start providing suggestions on how to plug the memory leak in your app.&lt;/p&gt;&lt;p&gt;Josh&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Wed, 14 Oct 2009 18:27:37 GMT</pubDate><guid isPermaLink="false">Commented Issue: ViewModels not being thrown away [5734] 20091014062737P</guid></item><item><title>Created Issue: ViewModels not being thrown away [5734]</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5734</link><description>Hey i cant find a good place to post this, so ill try here first.&lt;br /&gt;Im having a problem with my ViewModels never being GC&amp;#39;ed until the app is shutdown. This is a major issue&amp;#33; Can you pros lend some ideas as to exactly what could be the cause of them never being released&amp;#63; Im using a tabbed style app, where you can open as many Entity tabitems&amp;#40;viewmodels&amp;#41; as you want, and then close them when youre done. The examples Ive seen from disciples they always limit the number of open VMs at once...am I missing something, doing something wrong&amp;#63; Im using Joshs&amp;#47;Marlons Mediator to send out messages, with a static Mediator singleton in my base viewmodel...could that be a culprit&amp;#63;&lt;br /&gt;&lt;br /&gt;Thanks&amp;#33;&lt;br /&gt;Justin&lt;br /&gt;</description><author>ftballguy45</author><pubDate>Fri, 09 Oct 2009 19:10:44 GMT</pubDate><guid isPermaLink="false">Created Issue: ViewModels not being thrown away [5734] 20091009071044P</guid></item><item><title>Commented Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5453</link><description>Since the PropertyChangedEventArgs already has the property name, and it is frequently &amp;#40;at least for me&amp;#33;&amp;#41; the case that I&amp;#39;m just passing the change notification from a model property to a ViewModel property of the same name. I added a second PropertyObserver.Register method that takes a two parameter action &amp;#40;the second parameter is string&amp;#41;.  When invoked the property name is passed as the value of that parameter.&lt;br /&gt;&lt;br /&gt;Also, I added a CollectionObserver class that does WeakEvent connection to INotifyCollectionChanged.  It catches changes to the collection itself &amp;#40;unlike the Charles Petzold msdn article, which deals with changes to the items IN the collection.&amp;#41;  The registrations are specific by the enum NotifyCollectionChangedAction.&lt;br /&gt;&lt;br /&gt;Code &amp;#40;and simple unit tests&amp;#41; attached.&lt;br /&gt;Comments: ** Comment from web user: MattHeffron ** &lt;p&gt;The justification for the two parameter handler in the PropertyObserver.RegisterHandler &amp;#40;not .Register, a typo in the original Description above&amp;#41; is where the View Model has a property which has the same name as a Model property but is just a controlled formattingt of the value.  &lt;br /&gt;E.g., &lt;br /&gt;    public string RealTemperature &amp;#123;  get &amp;#123; return GetFormattedOutputTemperature&amp;#40;TheRunConditions.RealTemperature&amp;#41;&amp;#59; &amp;#125;  &amp;#125;&lt;br /&gt;The handler registered on the RealTemperature property of the model &amp;#40;TheRunConditions&amp;#41; needs only to raise the PropertyChanged event for the ViewModel in order for WPF to update the display.  Since there are several such property-pairs in my Model-ViewModel, I have a simple handler that is registered for them all&amp;#58;&lt;br /&gt;RunConditionsObserver &amp;#61; new PropertyObserver&amp;#60;RunConditions&amp;#62;&amp;#40;TheRunConditions&amp;#41;&lt;br /&gt;                              .RegisterHandler&amp;#40;rc &amp;#61;&amp;#62; rc.RealTemperature, PassThroughRaisePropertyChanged&amp;#41;&lt;br /&gt;                              .RegisterHandler&amp;#40; ... etc&lt;/p&gt;&lt;p&gt;    void PassThroughRaisePropertyChanged&amp;#40;object ignore, string propertyName&amp;#41;&lt;br /&gt;    &amp;#123; RaisePropertyChanged&amp;#40;propertyName&amp;#41;&amp;#59; &amp;#125;&lt;/p&gt;&lt;p&gt;In this way the registered handlers don&amp;#39;t need to have the property names &amp;#34;hard coded&amp;#34;.&lt;/p&gt;</description><author>MattHeffron</author><pubDate>Mon, 24 Aug 2009 17:34:32 GMT</pubDate><guid isPermaLink="false">Commented Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver 20090824053432P</guid></item><item><title>Reopened Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5453</link><description>Since the PropertyChangedEventArgs already has the property name, and it is frequently &amp;#40;at least for me&amp;#33;&amp;#41; the case that I&amp;#39;m just passing the change notification from a model property to a ViewModel property of the same name. I added a second PropertyObserver.Register method that takes a two parameter action &amp;#40;the second parameter is string&amp;#41;.  When invoked the property name is passed as the value of that parameter.&lt;br /&gt;&lt;br /&gt;Also, I added a CollectionObserver class that does WeakEvent connection to INotifyCollectionChanged.  It catches changes to the collection itself &amp;#40;unlike the Charles Petzold msdn article, which deals with changes to the items IN the collection.&amp;#41;  The registrations are specific by the enum NotifyCollectionChangedAction.&lt;br /&gt;&lt;br /&gt;Code &amp;#40;and simple unit tests&amp;#41; attached.&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;After revisiting this item, I realized that you are proposing two new, unrelated additions.  I should have been more thorough before closing this item&amp;#33;  I very much like the CollectionObserver class, and can think of several situations in which I would have used it.  I will reconsider this proposal.  Great work&amp;#33;&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Sun, 23 Aug 2009 19:08:29 GMT</pubDate><guid isPermaLink="false">Reopened Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver 20090823070829P</guid></item><item><title>Closed Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5453</link><description>Since the PropertyChangedEventArgs already has the property name, and it is frequently &amp;#40;at least for me&amp;#33;&amp;#41; the case that I&amp;#39;m just passing the change notification from a model property to a ViewModel property of the same name. I added a second PropertyObserver.Register method that takes a two parameter action &amp;#40;the second parameter is string&amp;#41;.  When invoked the property name is passed as the value of that parameter.&lt;br /&gt;&lt;br /&gt;Also, I added a CollectionObserver class that does WeakEvent connection to INotifyCollectionChanged.  It catches changes to the collection itself &amp;#40;unlike the Charles Petzold msdn article, which deals with changes to the items IN the collection.&amp;#41;  The registrations are specific by the enum NotifyCollectionChangedAction.&lt;br /&gt;&lt;br /&gt;Code &amp;#40;and simple unit tests&amp;#41; attached.&lt;br /&gt;Comments: &lt;p&gt;feature declined&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Sun, 23 Aug 2009 18:56:55 GMT</pubDate><guid isPermaLink="false">Closed Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver 20090823065655P</guid></item><item><title>Commented Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5453</link><description>Since the PropertyChangedEventArgs already has the property name, and it is frequently &amp;#40;at least for me&amp;#33;&amp;#41; the case that I&amp;#39;m just passing the change notification from a model property to a ViewModel property of the same name. I added a second PropertyObserver.Register method that takes a two parameter action &amp;#40;the second parameter is string&amp;#41;.  When invoked the property name is passed as the value of that parameter.&lt;br /&gt;&lt;br /&gt;Also, I added a CollectionObserver class that does WeakEvent connection to INotifyCollectionChanged.  It catches changes to the collection itself &amp;#40;unlike the Charles Petzold msdn article, which deals with changes to the items IN the collection.&amp;#41;  The registrations are specific by the enum NotifyCollectionChangedAction.&lt;br /&gt;&lt;br /&gt;Code &amp;#40;and simple unit tests&amp;#41; attached.&lt;br /&gt;Comments: ** Comment from web user: JoshSmithOnWpf ** &lt;p&gt;Thanks for this suggestion, Matt.  At this time I&amp;#39;m not going to add it to the library, because I have never found myself wanting this particular feature, and it introduces a new type to the library &amp;#40;CollectionObserver&amp;#41;.  I might be overly conservative, but my overarching goal with MVVM Foundation is to keep it as minimal as possible.  Perhaps one day I will come around, and add it.  Thanks again&amp;#33;&lt;/p&gt;</description><author>JoshSmithOnWpf</author><pubDate>Sun, 23 Aug 2009 18:56:42 GMT</pubDate><guid isPermaLink="false">Commented Issue: PropertyObserver: added handlers that pass property name &amp; CollectionObserver 20090823065642P</guid></item><item><title>Closed Issue: Messenger.NotifyColleagues invokes registered delegates in reverse order.</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5448</link><description>I discovered that the registered delegates for a given message are invoked in the reverse order of registration.  In my application, I needed to ensure some specific delegates were invoked before all the others.  I added following 1 line &amp;#40;and comment&amp;#41; to MessageToActionsMap.GetActions&amp;#40;...&amp;#41; right before the final &amp;#34;return actions&amp;#59;&amp;#34;&lt;br /&gt;        &amp;#47;&amp;#47; Because it &amp;#42;may&amp;#42; be important to preserve the order of the original weakActions List&lt;br /&gt;        &amp;#47;&amp;#47; and weakActions was traversed in reverse order, reverse the final list.&lt;br /&gt;        actions.Reverse&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;Comments: Resolved with changeset 32506.</description><author>JoshSmithOnWpf</author><pubDate>Sun, 23 Aug 2009 18:45:42 GMT</pubDate><guid isPermaLink="false">Closed Issue: Messenger.NotifyColleagues invokes registered delegates in reverse order. 20090823064542P</guid></item><item><title>Closed Issue: Test fails in Release build</title><link>http://mvvmfoundation.codeplex.com/WorkItem/View.aspx?WorkItemId=5155</link><description>A minor defect, but one that irks the test-infected &amp;#58;&lt;br /&gt;The test method ObservableObjectTest.InvalidPropertyNameIsReported fails in the Release build &amp;#58; indeed it is testing a feature that is documented as belonging only in Debug builds &amp;#33;&lt;br /&gt;That method should thus probably be surrounded with &amp;#35;if&amp;#40;DEBUG&amp;#41;&amp;#47;&amp;#35;endif or tagged with some equivalent attribute.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ll finish by hijacking this issue ticket to say thanks a lot for sharing all the good stuff on WPF for all this time &amp;#33; &amp;#58;&amp;#41;&lt;br /&gt;Comments: Resolved with changeset 32506.</description><author>JoshSmithOnWpf</author><pubDate>Sun, 23 Aug 2009 18:45:42 GMT</pubDate><guid isPermaLink="false">Closed Issue: Test fails in Release build 20090823064542P</guid></item></channel></rss>