Accessing View from ViewModel
ViewConnection class looks cool, I think that's a clever use of tasks. But frankly I don't see why you can't have a 

public string State { get {...} set {...}}


property on both view and viewmodel and solve your problem with two-way databinding. You can set this property on your viewmodel when you load your layout. If view is there - fine, it will be notified that the property has changed and you can handle this change on the view side (i.e. update datagrid with new state). If the view is not there - also fine, it will fetch the property from viewmodel as soon as you set its DataContext. In similar fashion you can save datagrid state on view side, set View.State and handle the new state in ViewModel.State property (i.e save it to file). You do not show your view class, but I don't see any problems with this approach off the bat, and I think that's how those things should be done normally.