Correct use of MVVM and MouseEvent Handling
Looks OK to me. You do leak views to your viewmodel though. Some better approaches:


Handle event on rectangle itself. It will allow you to bind it's DataContext directly to command parameter. This should eliminate the leak.
Use items control that supports selection, i.e. ListBox. Then you will be able to bind to SelectedItem property directly without any events.


Other minor things:


Base postfix is normally used to indicate an abstract class. Might want to remove it from your command class, since it is clearly not abstract.
I'm not sure where this whole thing with lazy initialization is coming from (it is not the first time I see it), but it makes no sense to me. What's the point in lazy initialization for commands? Just use regular readonly property:

public ICommand MouseTestCommand {get;}


And initialize it in constructor. It is cleaner and requires less code to write. Also you might want to create another constructor for your command, that passes null for CanExecute by default.