if you would change the System.Windows.Window type to a FrameworkElement type in the WindowLogic constructor one could use this class for windows which are not derived from System.Windows.Window but have the same properties/methods (DialogResult, Closed...)
without duplicating catel code.
public WindowLogic(FrameworkElement targetWindow, Type viewModelType, IViewModel viewModel)
changing WindowBehavior into
class WindowBehavior : MVVMBehaviorBase<FrameworkElement, WindowLogic>
would also allow one to use this behavior for "windows" not derived from System.Windows.Window but with the same methods/properties.
these modifications do not break existing code....