Some quick notes about one architectural pattern for WPF apps -- this is a modified version of MVC/MVP.
The Model
- bottom layer of the pattern
- no knowledge of the View (UI)
- variables should be named in UI-agnostic terms ("available" vs "visible")
- .NET class
The View
- WPF/Silverlight representation of the UI
- should have minimal code
- connects to the ViewModel through the DataContext property
- should be editable in either Blend or Visual Studio
- XAML file
The ViewModel
- represents the "glue" between the UI and the back end
- presents data and interacts with code
- responsible for property change notifications
- exposes RoutedCommand and DelegateCommand commands
- shouldn't contain references to specific UI elements