To make myself clear I never suggested adding a reference to the childwindow module (your SharedFormsModule). I suggested keeping it loose by exporting a typeof(ChildWindow) as ChildWindow is part of the sl framework itself. You can do it using interfaces, but that needs to be shared between your module and the shell, which you dont have to worry about in case of ChildWindow. I have done this in my app and it works absolutely fine.
As above you will just need to add the AllowDefault=true and AllowRecomposition=true for it to get repopulated once your module gets downloaded. To check you could even implement theIPartImportsSatisfied in your shell to check if the OnImportsSatisfiedgets called once your module is downloaded and check if your childwindow properties are populated.
[Import("SMMMessageWindow", AllowDefault=true, AllowRecomposition=true)] public ChildWindow SMMMessageWindow { get; set; } [Import("ErrorWindow", AllowDefault=true, AllowRecomposition=true)] public ChildWindow ErrorWindow { get; set; }
I would still not go the interface way as that's an additional abstraction and it really isn't doing much in your case other than just callingShow() on your childwindow. Too much of abstraction is not needed in your case.