Dynamic data is a portable class library which brings the power of reactive (rx) to collections. It is open source and the code base lives here Dynamic Data on GitHub.
This is an example of how to create a hierachal reactive tree from a flat observable stream.
The demo illustrates how the following code:
var loader = employeeService.Employees.Connect() .TransformToTree(employee => employee.BossId) .Transform(node => new EmployeeViewModel(node, Promote,Sack)) .Bind(_employeeViewModels) .DisposeMany() .Subscribe();
together with some view model and xaml magic produces this