Replace the current TreeView object being used to display the ConnectionTree with TreeListView. This will greatly reduce coupling between UI and domain logic.
The coupling with the presentation layer is even worse than I thought. Even simple changes require many cascading changes.
I will need to begin by consolidating any references to the TreeView used by the presentation layer. Main culprits are:
Any connection loader/saver
Presentation operates on data provided by some domain object. In this case, it will likely be a connectiontree object. Utilizing dependency injection, the TreeView will require a ConnectionTree to build itself.
Domain operates on data provided by some Datasource object. XML will create some object to serialize/deserialize data. Utilizing dependency injection, the ConnectionTree will require some ConnectionLoader or ConnectionSaver object from the Datasource layer to build itself.
To further break down the Datasource layer:
DataMapper ---> (XmlConnectionsDeserializer)
DataProvider ---> (FileProvider)
The DataProvider is responsible for loading the data from source source (file, database, api, etc).
The DataMapper is responsible for serialization/deserialization of the underlying domain objects.
Finished with decoupling the XmlConnectionsDeserializer from data source / presentation.