<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>WPF Application Framework (WAF)</title><link>http://waf.codeplex.com/project/feeds/rss</link><description>The WPF Application Framework &amp;#40;WAF&amp;#41; is a lightweight Framework that helps you to create well structured WPF Applications. It supports you in applying a Layered Architecture and the Model-View-ViewModel &amp;#40;aka MVVM, M-V-VM, PresentationModel&amp;#41; pattern.</description><item><title>New Post: Login (inferring existence of different user roles) and modules composition</title><link>http://waf.codeplex.com/discussions/444755</link><description>&lt;div style="line-height: normal;"&gt;Hello, &lt;br /&gt;
&lt;br /&gt;
Thank you, first, for the quality and amount of work put in this framework.&lt;br /&gt;
Recognizing here and there the whys and hows the framework is built in such a way is utterly impressive. I know why I want it.&lt;br /&gt;
&lt;br /&gt;
I would like in the meantime ask you any advise about a new application we are about to develop. the application is multi users and multi roles, depending of the role of the current user.&lt;br /&gt;
&lt;br /&gt;
I would like to ask advise on implementing use-cases for more advanced roles (admin);&lt;br /&gt;
&lt;br /&gt;
would it be acceptable to place the implementation of these - restricted- use-cases within Extension modules?&lt;br /&gt;
&lt;br /&gt;
 If this makes sense up to here, would it be reasonable to &amp;quot;MEF&amp;quot; compose the different parts after the login is actually performed?&lt;br /&gt;
&lt;br /&gt;
Or, said in another manner, having the application composed in two phases? Minimal to offer logins then the in a second phase the construction of right extension based on current role of the user?&lt;br /&gt;
&lt;br /&gt;
Let me know if I m about to hit the wall too hard.&lt;br /&gt;
Thank you very much in advance.  &lt;br /&gt;
&lt;/div&gt;</description><author>elemont071</author><pubDate>Thu, 23 May 2013 13:42:06 GMT</pubDate><guid isPermaLink="false">New Post: Login (inferring existence of different user roles) and modules composition 20130523014206P</guid></item><item><title>New Post: How to update a cell in a DataGrid once another cell is modified on the same row?</title><link>http://waf.codeplex.com/discussions/444726</link><description>&lt;div style="line-height: normal;"&gt;Hello!&lt;br /&gt;
&lt;br /&gt;
I have developed a program to display and edit data in a DataGrid, based on the Book Library sample.  My setting are: &lt;br /&gt;
&lt;br /&gt;
Data Mapping: Entity Framework&lt;br /&gt;
&lt;br /&gt;
Database: SQL Server 2010&lt;br /&gt;
&lt;br /&gt;
Binding main table: tblAddress; fields: Address_ID (auto-incremented), FK_Contact_ID, Address_1, Address_2, ...&lt;br /&gt;
&lt;br /&gt;
Binding foreign (linked) table: tblContact; field: Contact_ID (auto-incremented), ContactName&lt;br /&gt;
&lt;br /&gt;
Navigation Property: AddressToContact (tblAddress.FK_Contact_ID ==&amp;gt; tblContact.Contact_ID)&lt;br /&gt;
&lt;br /&gt;
DataGrid Columns: Address_ID, FK_Contact_ID, ContactName, Address_1, Address_2, ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XAML:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;DataGrid x:Name=&amp;quot;xDataGrid&amp;quot; DataContext=&amp;quot;{Binding}&amp;quot; ItemsSource=&amp;quot;{Binding AddressCollection}&amp;quot; SelectedItem=&amp;quot;{Binding SelectedAddress}&amp;quot; SelectionChanged=&amp;quot;DataGridSelectionChanged&amp;quot;&amp;gt;
&amp;lt;DataGrid.Columns&amp;gt;
            &amp;lt;DataGridTextColumn Header=&amp;quot;Address_ID&amp;quot; IsReadOnly=&amp;quot;True&amp;quot;
                    Binding=&amp;quot;{Binding Address_ID,  Mode=OneWay}&amp;quot; /&amp;gt;

            &amp;lt;DataGridTextColumn Header=&amp;quot;FK_Contact_ID&amp;quot; 
                    Binding=&amp;quot;{Binding FK_Contact_ID, Mode=TwoWay, 
                    UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, NotifyOnValidationError=True}&amp;quot; /&amp;gt;
&amp;lt;DataGridTextColumn Header=&amp;quot;ContactName&amp;quot; 
                    Binding=&amp;quot;{Binding AddressToContact.ContactName, Mode=TwoWay, 
                    UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, NotifyOnValidationError=True}&amp;quot; /&amp;gt;
&amp;lt;/DataGrid.Columns&amp;gt;
&amp;lt;/DataGrid&amp;gt;&lt;/code&gt;&lt;/pre&gt;

When I run the application all cells are populated from the database correctly.  However, when I change a cell value in the FK_Contact_ID column, the corresponding ContactName cell should get updated automatically; but it does not until I click on it.&lt;br /&gt;
&lt;br /&gt;
Please advise how I can fix this issue. In fact, the Mode attribute of the ContactName column should be set to OneWay.&lt;br /&gt;
&lt;br /&gt;
If you need more info, please let me know.&lt;br /&gt;
&lt;br /&gt;
Regards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sabba&lt;br /&gt;
&lt;/div&gt;</description><author>Sabba</author><pubDate>Thu, 23 May 2013 10:10:27 GMT</pubDate><guid isPermaLink="false">New Post: How to update a cell in a DataGrid once another cell is modified on the same row? 20130523101027A</guid></item><item><title>Closed Issue: BookLibrary: Backspace in a cell doesn't produce a validation error. [7106]</title><link>http://waf.codeplex.com/workitem/7106</link><description>Steps to reproduce&amp;#58;&lt;br /&gt;1. Start BookLibrary sample application&lt;br /&gt;2. Select the first cell in the DataGrid &amp;#40;title of the first book&amp;#41;&lt;br /&gt;3. Press the Backspace key&lt;br /&gt;4. Press the Tab key to commit the change&lt;br /&gt; &lt;br /&gt;No validation error is visible. But it should be shown because the Title property is defined as Required.&lt;br /&gt;</description><author>jbe2277</author><pubDate>Thu, 16 May 2013 11:50:43 GMT</pubDate><guid isPermaLink="false">Closed Issue: BookLibrary: Backspace in a cell doesn't produce a validation error. [7106] 20130516115043A</guid></item><item><title>Closed Issue: WAF Template installer not compatible with VS11 Beta [7808]</title><link>http://waf.codeplex.com/workitem/7808</link><description>The WAF Template installer is not compatible with VS11 Beta. It cannot be installed.&lt;br /&gt;</description><author>jbe2277</author><pubDate>Thu, 16 May 2013 11:50:42 GMT</pubDate><guid isPermaLink="false">Closed Issue: WAF Template installer not compatible with VS11 Beta [7808] 20130516115042A</guid></item><item><title>Closed Issue: Model class SetValue does not work for nullable properties [8020]</title><link>http://waf.codeplex.com/workitem/8020</link><description>The SetValue method on System.Waf.Foundation.Model class does not support nullable types. In some scenarios, e.g. binding a three-state checkbox to a bool&amp;#63;, it would be necessary.&lt;br /&gt;</description><author>jbe2277</author><pubDate>Thu, 16 May 2013 11:50:42 GMT</pubDate><guid isPermaLink="false">Closed Issue: Model class SetValue does not work for nullable properties [8020] 20130516115042A</guid></item><item><title>Closed Issue: Error when use with Telerik RadTreeListView. [8183]</title><link>http://waf.codeplex.com/workitem/8183</link><description>This is the error when I use waf with Telerik RadTreeListView. I think DataModel class should marked a serializable, because sometime we need to serialize classes that inherits from Datamodel class. &lt;br /&gt;Best,&lt;br /&gt;Asad &lt;br /&gt;&amp;#160;&lt;br /&gt;Type &amp;#39;System.Waf.Applications.DataModel&amp;#39; in Assembly &amp;#39;WpfApplicationFramework, Version&amp;#61;2.5.0.6, Culture&amp;#61;neutral, PublicKeyToken&amp;#61;null&amp;#39; is not marked as serializable.&lt;br /&gt;</description><author>jbe2277</author><pubDate>Thu, 16 May 2013 11:50:42 GMT</pubDate><guid isPermaLink="false">Closed Issue: Error when use with Telerik RadTreeListView. [8183] 20130516115042A</guid></item><item><title>Closed Issue: BookLibrary: edit mode lost [8478]</title><link>http://waf.codeplex.com/workitem/8478</link><description>Steps to reproduce&amp;#58;&lt;br /&gt;&lt;br /&gt;1. Start BookLibrary sample application&lt;br /&gt;&lt;br /&gt;2. Add a new book&lt;br /&gt;&lt;br /&gt;3. Click to the new row to be able to edit it but do type any character&lt;br /&gt;&lt;br /&gt;4. Click to remove button&lt;br /&gt;&lt;br /&gt;Now you cannot edit the DataGrid. It is the same with the persons.&lt;br /&gt;Maybe you should not be able to leave a non valid row&amp;#63;&lt;br /&gt;</description><author>jbe2277</author><pubDate>Thu, 16 May 2013 11:50:41 GMT</pubDate><guid isPermaLink="false">Closed Issue: BookLibrary: edit mode lost [8478] 20130516115041A</guid></item><item><title>Updated Wiki: Modular Architecture</title><link>https://waf.codeplex.com/wikipage?title=Modular Architecture&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Modular Architecture&lt;/h1&gt;
&lt;h2&gt;1. Introduction&lt;/h2&gt;Applying only the &lt;a href="https://waf.codeplex.com/wikipage?title=Architecture%20-%20Get%20The%20Big%20Picture&amp;referringTitle=Modular%20Architecture"&gt;Layered Architecture&lt;/a&gt; for structuring a large software system into maintainable parts might not be sufficient. The Modular Architecture can solve this issue. It extends the layering by introducing another dimension to separate the software system.&lt;br /&gt; &lt;br /&gt;Separation dimensions:
&lt;ol&gt;&lt;li&gt;Layers separate the software artifacts into technical groups (e.g. Presentation layer contains UI related code).&lt;/li&gt;
&lt;li&gt;Modules separate the software artifacts into distinct parts which are often specific domain aspects (e.g. an email client might separate the email management implementation and the address book implementation into separate modules).&lt;/li&gt;&lt;/ol&gt;
&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=waf&amp;DownloadId=598649" alt="Figure&amp;#32;1&amp;#58;&amp;#32;Shows&amp;#32;the&amp;#32;two&amp;#32;separation&amp;#32;dimensions&amp;#32;of&amp;#32;layers&amp;#32;and&amp;#32;modules." title="Figure&amp;#32;1&amp;#58;&amp;#32;Shows&amp;#32;the&amp;#32;two&amp;#32;separation&amp;#32;dimensions&amp;#32;of&amp;#32;layers&amp;#32;and&amp;#32;modules." /&gt;&lt;br /&gt;&lt;i&gt;Figure 1: Shows the two separation dimensions of layers and modules.&lt;/i&gt;&lt;br /&gt; 
&lt;h2&gt;2. Motivation&lt;/h2&gt;Applying the Modular Architecture gives us the following advantages:
&lt;ul&gt;&lt;li&gt;Provides a simple and clean software structure.&lt;/li&gt;
&lt;li&gt;Prevents that unrelated classes depend on each other.&lt;/li&gt;
&lt;li&gt;Changing the implementation of a module doesn’t affect other modules.&lt;/li&gt;
&lt;li&gt;Reduces the efforts to maintain and extend the software system. This comes of fewer dependencies in the software system.&lt;/li&gt;
&lt;li&gt;Helps to scale the software development to more development teams. A Modular Architecture requires good interfaces between the modules. These interfaces can be used to separate the responsibilities of the development teams.&lt;/li&gt;
&lt;li&gt;Developers can concentrate on their own modules and don’t need to understand the implementation of the other modules. They just work with the “documented” interfaces of the other modules.&lt;/li&gt;
&lt;li&gt;Simplifies unit testing because dependent modules can be replaced by mock implementations.&lt;/li&gt;&lt;/ul&gt;
Note: These advantages are not for free! They are seen only if the development teams follow the Software Architecture rules. And that requires a severe discipline of all involved developers.&lt;br /&gt; 
&lt;h2&gt;3. Participants&lt;/h2&gt;The three types participating in a Modular Architecture are: Module; Interface; Application Framework.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=waf&amp;DownloadId=598650" alt="Figure&amp;#32;2&amp;#58;&amp;#32;Shows&amp;#32;the&amp;#32;participants&amp;#32;of&amp;#32;a&amp;#32;Modular&amp;#32;Architecture." title="Figure&amp;#32;2&amp;#58;&amp;#32;Shows&amp;#32;the&amp;#32;participants&amp;#32;of&amp;#32;a&amp;#32;Modular&amp;#32;Architecture." /&gt;&lt;br /&gt;&lt;i&gt;Figure 2: Shows the participants of a Modular Architecture.&lt;/i&gt;&lt;br /&gt; 
&lt;h3&gt;3.1. Module&lt;/h3&gt;A module contains all software artifacts for a distinct part of the software system. This distinct part represents often a specific domain/business aspect.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Characteristics&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;A module contains all the types that are necessary to implement the distinct part of the software system.&lt;/li&gt;
&lt;li&gt;A module is responsible for all technical aspects. This might include the user interface for the module’s domain or the persistency. Therefore, a module consists of various layers.&lt;/li&gt;
&lt;li&gt;A module must not have a direct dependency to another module. &lt;/li&gt;
&lt;li&gt;Communication between modules must be decoupled by an Interface.&lt;/li&gt;
&lt;li&gt;A module can be replaced by another module without the need to recompile the software system.&lt;/li&gt;
&lt;li&gt;A module consists of one or more .NET Assemblies.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Common Issues&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;A module has an assembly reference to another module. As a result, these modules aren’t decoupled of each other.&lt;/li&gt;
&lt;li&gt;Avoid creating too much modules in a software system. The overall complexity will rise because the communication between the modules must be decoupled. &lt;/li&gt;
&lt;li&gt;A module does not focus on the specific part for which it is responsible for. This results in a negative impact on the understandability and manageability of the code.&lt;/li&gt;&lt;/ul&gt;
 
&lt;h3&gt;3.2. Interface&lt;/h3&gt;The interface exposes the public functionality of a module. Different modules can communicate via this interface with each other.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Characteristics&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;An interface contains the types that are necessary to expose the public functionality of one module.&lt;/li&gt;
&lt;li&gt;Other modules might use this public functionality. Thus, they have a direct dependency to the interface.&lt;/li&gt;
&lt;li&gt;The types can be:
&lt;ul&gt;&lt;li&gt;Interfaces&lt;/li&gt;
&lt;li&gt;Data Transfer Objects (DTO). These are simple immutable objects without any logic.&lt;/li&gt;
&lt;li&gt;EventArgs. These classes are similar to DTOs.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;The number of types in the interface assembly should be low. This ensures low coupling between the modules.&lt;/li&gt;
&lt;li&gt;An interface consists of one or more .NET Assemblies. In most scenarios only one .NET Assembly is used.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Common Issues&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;If the interface contains a lot of types then this can be a sign that the module boundaries are not chosen well. Bloating interfaces tighten the coupling between the modules and this lowers the advantages of the Modular Architecture (see 2. Motivation).&lt;/li&gt;
&lt;li&gt;Every module that exposes public functionality must provide it’s on interface assemblies. An interface is implemented by only one module but it can be used by any module.&lt;/li&gt;
&lt;li&gt;Avoid exposing the module’s domain objects via the interface. Instead, create a DTO object which contains the required data.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Quality&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Changing the interfaces has a huge impact on the whole software system. Therefore, the quality of the interfaces is very important. Here are some recommendations to improve the quality of the interface assemblies:
&lt;ul&gt;&lt;li&gt;Apply code reviews.&lt;/li&gt;
&lt;li&gt;Activate Code Analysis with “Microsoft All Rules”.&lt;/li&gt;
&lt;li&gt;Enable XML Comments. Use them to document the interface members.&lt;/li&gt;
&lt;li&gt;Write a document about the usage of the module’s public functionality. Consider to add important design decisions regarding the interface to this document.&lt;/li&gt;&lt;/ul&gt;
 
&lt;h3&gt;3.3. Application Framework&lt;/h3&gt;The application framework is the foundation for the software system. It contains all the types that should be shared between multiple modules.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Characteristics&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The application framework might provide reusable types of various layers. Examples:
&lt;ul&gt;&lt;li&gt;Presentation layer: Custom controls, global ResourceDictionaries&lt;/li&gt;
&lt;li&gt;Domain layer: Custom base class for domain objects&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;The WPF Application Framework (WAF) can also be seen as application framework. It provides types that can be used by all modules (e.g. ViewModel).&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Common Issues&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Avoid using the application framework to overcome the effort to decouple the module communication.&lt;/li&gt;
&lt;li&gt;Do not implement types that are used by only one module. These types should reside within the responsible module.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Quality&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Changing the application framework has a major impact on the whole software system. All modules might have a dependency to this framework. For that reason, the quality is very important. Here are some recommendations to improve the quality of the application framework:
&lt;ul&gt;&lt;li&gt;Apply code reviews.&lt;/li&gt;
&lt;li&gt;Activate Code Analysis with “Microsoft All Rules”.&lt;/li&gt;
&lt;li&gt;Enable XML Comments. Use them to document the public types and members.&lt;/li&gt;
&lt;li&gt;Write a document about the usage and architecture of the application framework.&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;4. Alternative: Extensions&lt;/h2&gt;Sometimes it is not appropriate to separate a part of the system into two modules because they would have to work tightly together. Consequently, this would create a bloating interface for the communication.&lt;br /&gt; &lt;br /&gt;In that case the usage of an extension might be the better choice. An extension is part of the module and thus, it is able to access the internal implementation.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=waf&amp;DownloadId=598651" alt="Figure&amp;#32;3&amp;#58;&amp;#32;Shows&amp;#32;the&amp;#32;dependency&amp;#32;between&amp;#32;the&amp;#32;core&amp;#32;implementation&amp;#32;and&amp;#32;the&amp;#32;extension." title="Figure&amp;#32;3&amp;#58;&amp;#32;Shows&amp;#32;the&amp;#32;dependency&amp;#32;between&amp;#32;the&amp;#32;core&amp;#32;implementation&amp;#32;and&amp;#32;the&amp;#32;extension." /&gt;&lt;br /&gt;&lt;i&gt;Figure 3: Shows the dependency between the core implementation and the extension.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Example&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The BookLibrary sample application comes with a reporting extension. This extension allows the user to create reports about the books in the library. The extension needs full access to the Book and Person entities (domain objects). &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Characteristics&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;The extension can easily be replaced with another implementation (e.g. a mock implementation to simplify the unit testing of the module).&lt;/li&gt;
&lt;li&gt;The module might be implemented in a way that the availability of the extension is optional.&lt;/li&gt;
&lt;li&gt;An extension is part of one module. It cannot be reused by other modules.&lt;/li&gt;&lt;/ul&gt;
 &lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jbe2277</author><pubDate>Fri, 10 May 2013 07:37:02 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Modular Architecture 20130510073702A</guid></item><item><title>Updated Wiki: Downloads</title><link>https://waf.codeplex.com/wikipage?title=Downloads&amp;version=43</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Downloads Overview&lt;/h2&gt;&lt;h3&gt;Stable&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Platform &lt;/th&gt;&lt;th&gt; Version &lt;/th&gt;&lt;th&gt; Date &lt;/th&gt;&lt;th&gt; Download &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 4.0 &lt;/td&gt;&lt;td&gt; 2.5.0.400 &lt;/td&gt;&lt;td&gt; Dec 08 2012 &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/98850"&gt;WPF Application Framework (WAF) 2.5.0.400&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 4.0 &lt;/td&gt;&lt;td&gt; 2.5.0.1 &lt;/td&gt;&lt;td&gt; Jan 03 2013 &lt;/td&gt;&lt;td&gt; &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/f8d578d5-cf37-461c-882e-d6e4ca39969b"&gt;WAF Project Template&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 4.0 &lt;/td&gt;&lt;td&gt; 2.0.0.400 &lt;/td&gt;&lt;td&gt; Sep 19 2011 &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/73586"&gt;WPF Application Framework (WAF) 2.0.0.400&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 4.0 &lt;/td&gt;&lt;td&gt; 1.0.0.400 &lt;/td&gt;&lt;td&gt; Aug 13 2010 &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/50517"&gt;WPF Application Framework (WAF) 1.0.0.400&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 3.5 SP1 &lt;/td&gt;&lt;td&gt; 1.0.0.350 &lt;/td&gt;&lt;td&gt; Jun 18 2010 &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/47427"&gt;WPF Application Framework (WAF) 1.0.0.350&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h3&gt;Alpha&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Platform &lt;/th&gt;&lt;th&gt; Version &lt;/th&gt;&lt;th&gt; Date &lt;/th&gt;&lt;th&gt; Download &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 4.5 &lt;/td&gt;&lt;td&gt; 3.0.0.5 &lt;/td&gt;&lt;td&gt; Apr 21 2013 &lt;b&gt;(NEW)&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/105455"&gt;WPF Application Framework (WAF) 3.0.0.5&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;h3&gt;Experimental&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt; Platform &lt;/th&gt;&lt;th&gt; Version &lt;/th&gt;&lt;th&gt; Date &lt;/th&gt;&lt;th&gt; Download &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; .NET Framework 3.5 SP1 &lt;/td&gt;&lt;td&gt; 1.0.0.1 &lt;/td&gt;&lt;td&gt; Sep 19 2010 &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/52583"&gt;WAF Windows Forms Adapter 1.0.0.1&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Silverlight 3 &lt;/td&gt;&lt;td&gt; 1.0.0.0 &lt;/td&gt;&lt;td&gt; Jul 12 2009 &lt;/td&gt;&lt;td&gt; &lt;a href="https://waf.codeplex.com/releases/view/30057"&gt;WAF Concepts in Silverlight 3 (Experimental)&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt; &lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jbe2277</author><pubDate>Sun, 21 Apr 2013 13:33:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Downloads 20130421013303P</guid></item><item><title>Created Release: WPF Application Framework (WAF) 3.0.0.5 (Apr 21, 2013)</title><link>https://waf.codeplex.com/releases?ReleaseId=105455</link><description>&lt;div class="wikidoc"&gt;Version: 3.0.0.5 (Milestone 5): This release contains the source code of the WPF Application Framework (WAF) and the sample applications.&lt;br /&gt; &lt;br /&gt;Please build the whole solution before you start one of the sample applications.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Requirements&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;.NET Framework 4.5 (The package contains a solution file for Visual Studio 2012)&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Changelog&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Legend:&lt;/b&gt; [B] Breaking change; [O] Marked member as obsolete&lt;/li&gt;
&lt;li&gt;WAF: Add the ValidatableModel class that implements the INotifyDataErrorInfo interface.&lt;/li&gt;
&lt;li&gt;WAF: Improve ValidationErrorsConverter to support ValidationResult objects as well.&lt;/li&gt;
&lt;li&gt;BookLibrary: Refactor the domain objects to use the new ValidatableModel class.&lt;/li&gt;
&lt;li&gt;InfoMan: Refactor the PresentationService implementations to overcome a WPF bug.&lt;/li&gt;
&lt;li&gt;Samples: Fix bug in upgrade the settings file from a previous version.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Other Downloads&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://waf.codeplex.com/wikipage?title=Downloads"&gt;Downloads Overview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jbe2277</author><pubDate>Sun, 21 Apr 2013 13:31:50 GMT</pubDate><guid isPermaLink="false">Created Release: WPF Application Framework (WAF) 3.0.0.5 (Apr 21, 2013) 20130421013150P</guid></item><item><title>Released: WPF Application Framework (WAF) 3.0.0.5 (Apr 21, 2013)</title><link>http://waf.codeplex.com/releases/view/105455</link><description>
&lt;div class="wikidoc"&gt;Version: 3.0.0.5 (Milestone 5): This release contains the source code of the WPF Application Framework (WAF) and the sample applications.&lt;br&gt;
&lt;br&gt;
Please build the whole solution before you start one of the sample applications.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Requirements&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework 4.5 (The package contains a solution file for Visual Studio 2012)&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Changelog&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Legend:&lt;/b&gt; [B] Breaking change; [O] Marked member as obsolete &lt;/li&gt;&lt;li&gt;WAF: Add the ValidatableModel class that implements the INotifyDataErrorInfo interface.
&lt;/li&gt;&lt;li&gt;WAF: Improve ValidationErrorsConverter to support ValidationResult objects as well.
&lt;/li&gt;&lt;li&gt;BookLibrary: Refactor the domain objects to use the new ValidatableModel class.
&lt;/li&gt;&lt;li&gt;InfoMan: Refactor the PresentationService implementations to overcome a WPF bug.
&lt;/li&gt;&lt;li&gt;Samples: Fix bug in upgrade the settings file from a previous version.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Other Downloads&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://waf.codeplex.com/wikipage?title=Downloads"&gt;Downloads Overview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sun, 21 Apr 2013 13:31:50 GMT</pubDate><guid isPermaLink="false">Released: WPF Application Framework (WAF) 3.0.0.5 (Apr 21, 2013) 20130421013150P</guid></item><item><title>New Post: Using VS 2012 (or even 2010) - project errors</title><link>http://waf.codeplex.com/discussions/433982</link><description>&lt;div style="line-height: normal;"&gt;Please build the whole solution before you start one of the sample applications.&lt;br /&gt;
&lt;/div&gt;</description><author>jbe2277</author><pubDate>Sat, 20 Apr 2013 10:26:47 GMT</pubDate><guid isPermaLink="false">New Post: Using VS 2012 (or even 2010) - project errors 20130420102647A</guid></item><item><title>New Post: Using VS 2012 (or even 2010) - project errors</title><link>http://waf.codeplex.com/discussions/433982</link><description>&lt;div style="line-height: normal;"&gt;Hi jbe2277,&lt;br /&gt;
&lt;br /&gt;
I have just downloaded the 3.0.0.4 version and tried to load the Book Library sample application but I'm getting the following error on line 58 of App.xaml.cs:&lt;br /&gt;
&lt;br /&gt;
Could not load file or assembly 'Waf.BookLibrary.Reporting.Presentation.dll' or one of its dependencies. The system cannot find the file specified.&lt;br /&gt;
&lt;/div&gt;</description><author>raisen</author><pubDate>Sat, 20 Apr 2013 07:56:14 GMT</pubDate><guid isPermaLink="false">New Post: Using VS 2012 (or even 2010) - project errors 20130420075614A</guid></item><item><title>New Post: EntityController</title><link>http://waf.codeplex.com/discussions/439315</link><description>&lt;div style="line-height: normal;"&gt;Thnx for the insights&lt;br /&gt;
&lt;br /&gt;
The second approach matches what i had i mind. the idea is that some modules will be reusable in different apps so it clearly must be separated from the rest completely. on the other had some app can have different implementations depending on the customer where the app is deployed. e.g. contacts and contactsex...&lt;br /&gt;
&lt;br /&gt;
A major requirement is that not the complete app should be rebuild when minor changes are done in one of the modules...&lt;br /&gt;
&lt;br /&gt;
this way however it requires a separate context for each module...&lt;br /&gt;
There is still one problem and that will be the reporting module needing data from different tables across the different modules. this requires duplicate entity classes over the modules and most likely require a rebuild of the reporting module when module database changes occur... &lt;br /&gt;
&lt;br /&gt;
it's acceptable to me (not ideal) but was wondering if there would be a better approach for this!?&lt;br /&gt;
&lt;br /&gt;
any suggestions on this are welcome.&lt;br /&gt;
&lt;/div&gt;</description><author>3WaySoftware</author><pubDate>Mon, 08 Apr 2013 07:07:16 GMT</pubDate><guid isPermaLink="false">New Post: EntityController 20130408070716A</guid></item><item><title>New Post: EntityController</title><link>http://waf.codeplex.com/discussions/439315</link><description>&lt;div style="line-height: normal;"&gt;You could put the entity related stuff into the “Common” projects. All modules have access to the “Common” assemblies.&lt;br /&gt;
 &lt;br /&gt;
But from an architectural point of view I do not recommend this approach. If you create 7 modules then this modules should be isolated of each other. This is important because the modules should be able to evolve independently of each other. Modifications of one module should not affect another module.&lt;br /&gt;
 &lt;br /&gt;
Isolating the modules is not possible if they share the same entities (or the same database tables). The module separation has not only to be done on code level but on data storage level as well.&lt;br /&gt;
 &lt;br /&gt;
Dependent on the situation I recommend one of the following approaches:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;If different modules have to work with the same domain objects (entities) then they should not be divided into separate modules.&lt;/li&gt;
&lt;li&gt;If different modules work with the same database but use different database tables, views, etc. then every module should get its own domain objects (entities) and persistency related code. But these domain objects must not be shared between modules. Data that needs to be shared should be transferred via DTO (data transfer objects) between the modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>jbe2277</author><pubDate>Sun, 07 Apr 2013 18:39:38 GMT</pubDate><guid isPermaLink="false">New Post: EntityController 20130407063938P</guid></item><item><title>New Post: Using VS 2012 (or even 2010) - project errors</title><link>http://waf.codeplex.com/discussions/433982</link><description>&lt;div style="line-height: normal;"&gt;Could you provide me more information?&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Which download/version of the WPF Application Framework are you using?&lt;/li&gt;
&lt;li&gt;Which version of Visual Studio 2010 are you using (e.g. Express, Ultimate)?&lt;/li&gt;
&lt;li&gt;
Do you have installed the Service Pack 1 for Visual Studio 2010?&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
However, the “Code Snippets” are not important for the WPF Application Framework (WAF) libraries or the sample applications. You can ignore this message.&lt;br /&gt;
&lt;/div&gt;</description><author>jbe2277</author><pubDate>Sun, 07 Apr 2013 18:23:17 GMT</pubDate><guid isPermaLink="false">New Post: Using VS 2012 (or even 2010) - project errors 20130407062317P</guid></item><item><title>New Post: EntityController</title><link>http://waf.codeplex.com/discussions/439315</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
I started from the Information manager sample to a POC for an modular app.&lt;br /&gt;
&lt;br /&gt;
now i was just wondering where to place the entity related stuff...&lt;br /&gt;
&lt;br /&gt;
Any suggestions... database is shared over 7 of the modules...&lt;br /&gt;
&lt;br /&gt;
thnx Mike&lt;br /&gt;
&lt;/div&gt;</description><author>3WaySoftware</author><pubDate>Fri, 05 Apr 2013 22:26:16 GMT</pubDate><guid isPermaLink="false">New Post: EntityController 20130405102616P</guid></item><item><title>New Post: Using VS 2012 (or even 2010) - project errors</title><link>http://waf.codeplex.com/discussions/433982</link><description>&lt;div style="line-height: normal;"&gt;VS 2010 Says Code Snippets.dll missing ... ??&lt;br /&gt;
&lt;/div&gt;</description><author>imDanish</author><pubDate>Thu, 04 Apr 2013 14:22:25 GMT</pubDate><guid isPermaLink="false">New Post: Using VS 2012 (or even 2010) - project errors 20130404022225P</guid></item><item><title>Commented Issue: Crash adding a new record from DataGrid [8627]</title><link>http://waf.codeplex.com/workitem/8627</link><description>BookApplication, press Add to add a new book, click on Title to start editing cell, then lose focus clicking on another control &amp;#40;for example, &amp;#34;Address Book&amp;#34; tab&amp;#41; and there is an exception from line&lt;br /&gt;&lt;br /&gt;_Title &amp;#61; StructuralObject.SetValidValue&amp;#40;value, false&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;because it tries to set a null value to the Title.&lt;br /&gt;&lt;br /&gt;How can this be avoided&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: gusi ** &lt;p&gt;Hi! And thanks for checking this.&lt;br&gt;You're right, I had the debugger set to halt on exceptions, but without the debugger the exception is correctly handled. Sorry for not seeing this first! :(&lt;/p&gt;</description><author>gusi</author><pubDate>Sat, 23 Mar 2013 11:26:30 GMT</pubDate><guid isPermaLink="false">Commented Issue: Crash adding a new record from DataGrid [8627] 20130323112630A</guid></item><item><title>Commented Issue: Crash adding a new record from DataGrid [8627]</title><link>http://waf.codeplex.com/workitem/8627</link><description>BookApplication, press Add to add a new book, click on Title to start editing cell, then lose focus clicking on another control &amp;#40;for example, &amp;#34;Address Book&amp;#34; tab&amp;#41; and there is an exception from line&lt;br /&gt;&lt;br /&gt;_Title &amp;#61; StructuralObject.SetValidValue&amp;#40;value, false&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;because it tries to set a null value to the Title.&lt;br /&gt;&lt;br /&gt;How can this be avoided&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: jbe2277 ** &lt;p&gt;Thank you for your feedback.&lt;br&gt; &lt;br&gt;I’m able to see this exception in the Debugger but the BookLibrary application doesn’t crash. The exception is catched by the WPF Binding infrastructure. Therefore, this shouldn’t be an issue.&lt;br&gt; &lt;br&gt;The exception comes because the Title column in the database is set to Nullable = false. When the WPF Binding tries to write “null” into the property setter then this exception is thrown. You might initialize the Title and Author properties with “string.Empty” in the constructor of the Book class.&lt;br&gt; &lt;br&gt;This exception does not occur anymore in the new WAF BookLibrary sample application because now it uses the POCO approach.&lt;/p&gt;</description><author>jbe2277</author><pubDate>Sat, 23 Mar 2013 11:00:30 GMT</pubDate><guid isPermaLink="false">Commented Issue: Crash adding a new record from DataGrid [8627] 20130323110030A</guid></item></channel></rss>