This blog will detail an application I created that mimics something you would do in WinForms 2.0 today. The application does not have a lot of styling in it and mainly centers around data binding, commands, events and the like. I am starting to work on another version of this application that does have a lot of styling to it using Interactive Designer but that will be a little ways off. So for now you get this very standard user interface that has a strong emphasis on some of the lower level aspects of WPF.
The premise of the application is an HR application that allows the user to enter new employees with their employment history, certifications they have obtained and the industries they have experience in. The application also enables the user to add expense entries for an employee.
The application is broken into two parts with a data layer containing the classes that implement INotifiyPropertyChange and ObservableCollection (IKHrData project) and a presentation layer containing pages, data templates and styles (IKHrDemo project).
The IKHrData project contains many ObservableCollections of business objects that support INotifyPropertyChange. The implementation of this interface allows the business objects to work with the UI Elements in a TwoWay binding mode and the use of the ObservableCollection containing the business objects allows for binding to lists.
The IKHrDemo project contains all of the pages, data templates and styles. The App.xx files contains the global data used by all of the pages in the application and the styles that contain the styles for grids that are used on the pages. The EmployeeInformation.xx files contain the page that is the source for the frame that is inside of the Employee Information tab on the main page. The ExpenseList.xx file contains the page that is the source for the frame that is inside of the Employee Expenses tab on the main page. The EmployeeList.xx file is where you can filter the employee list and select an employee to view. In all of these file data templates are used heavily to present the data.
To learn more about the concepts in this application I have listed a series of webcasts I have done and the technologies they introduce. This application has been referenced in many of them.