Right i am not sure if this is possible, but it is an idea.

You have a Treeview with multiple nodes right. For each node, you have a list that you show. Now each list has a set of listitems.

So for a list, you need a collection that stores which items have been checked.

but you have more than one list, so you need a collection of this collection. This outer collection is a collection of node keys that each hold the collection of listkeys.

So if you are not confused by the logic of that, give it a go.