Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vkobel/wpf-foundation-framework

This project provide a quick and easy-to-use WPF framework - still in progress
https://github.com/vkobel/wpf-foundation-framework

Last synced: about 1 month ago
JSON representation

This project provide a quick and easy-to-use WPF framework - still in progress

Awesome Lists containing this project

README

        

WPF-Foundation-Framework
========================

> First of all this is a **work in progress**

This project provide a quick and easy-to-use WPF framework separated into two sub-frameworks:
**FoundationData** and **FoundationWPF**

Main Features
-------------

+ The Data framework implements a generic `Repository` that provide standard methods to access and persist POCO form the Entity Framework
+ Two levels of navigation (with the possiblilty to implement more)
+ Described by the `NavigAttribute`
+ Uses dependency injection via **Ninject**
+ Instant and automatic ViewModel creation and `ViewModelCollection` right from the `Repository`
+ Possibility to have the ViewModels implementing `IPreLoadable` to enable asynchronous loading
+ Each ViewModel is represented by a `ViewModelProxy` which exposes a `BindingData` property to bind to
+ `BindingData` contains all the entity properties as well as the new ones defined in the ViewModel class that inherits from `ViewModelProxy`
+ The MVVM Framework used here is **MVVM Light Toolkit**

Samples
-------

#### Simplest possible ViewModel

All ViewModelProxy<> exposes the all proxied properties through `BindingData`.

```cs
class PersonViewModel : ViewModelProxy {
public PersonViewModel(Person p) : base(p) {
}
}
```

#### A Collection ViewModel to display a list of person and their details, with navigation `Humans -> Person`

Every ViewModelCollection exposes a public member `CollectionView`.

```cs
[Navig("Humans", "Person")]
class PersonCollectionViewModel : ViewModelCollection {
}
```

#### Usage in the view

Access a simple property:
```
<(...) Text="{Binding BindingData.Lastname}" />
```

Access a simple through the collection:
```
<(...) Text="{Binding CollectionView/BindingData.Lastname}" />
```

Bind to the collection:
```
<(...) ItemsSource="{Binding CollectionView}" />
```

More samples will come ;)