下記のコーディングで画面遷移しているのですが、window.Hide()をしてから遷移しますので、
今のwindowが隠れる為に、なにもない状態となって、次に遷移先のwindowが開きます。
よってちらつきが発生してしまいます。
ちらつきの回避と思ってwindow.Hide()を画面遷移後(Messenger.Raise()の後)にすると
制御が戻っていない為に、遷移元のwindowも残ってしまいます。
遷移元のwindowが残らずに画面遷移する方法を教えて下さい。

// 現在の View のインスタンスを取得
var window = Application.Current.Windows.OfType<Window>().SingleOrDefault((w) => w.IsActive);
try
{
       // 現在の View を非表示
       window.Hide();
       // View にメッセージを送信~子画面をモーダルで起動
      Messenger.Raise(new TransitionMessage(new 
                 ViewModel2(),ShowCommand2"));   
}
finally
{
      // View を再表示する
      window.ShowDialog();
}