3
Show.MessageBox()で問題を発見しました。Caliburn - ShellFramework - Show.MessageBox
私のアプリケーションでは、子ウィンドウをモーダルに表示するためにいくつかの場所でShow.Dialog()を呼び出します。
新しい子ウィンドウでShow.MessageBox()を使用すると、メッセージボックスはアプリケーションのメインウィンドウの中央に表示されます。ブレークポイントを置くことができ、メッセージボックスの所有者もメインウィンドウです。それを修正する
は、私がIQuestionDialogとハックでした:
[Singleton(typeof(IQuestionDialog))]
public class QuestionDialogViewModel : Caliburn.ShellFramework.Questions.QuestionDialogViewModel
{
public override void AttachView(object view, object context)
{
Window window = view as Window;
if (window != null)
{
Window owner = GetTopWindow();
if (owner != null)
{
window.Owner = owner;
}
}
base.AttachView(view, context);
}
private Window GetTopWindow()
{
//We have to get the next to last window in the list, the MsgBox will be the last
return Application.Current.Windows
.Cast<Window>()
.Reverse()
.Skip(1)
.FirstOrDefault();
}
}
これは、すべての可能なケースでは動作しませんが、私のアプリケーションで動作します。
これを解決するためのクリーナー方法はありますか?
RobはCaliburnで修正する方法を検討しています:http://caliburn.codeplex.com/workitem/7701誰かがすぐに清潔なソリューションを持っていますか? – jonathanpeppers
子ウィンドウとダイアログを作成するDefaultWindowManagerに実装が追加されました:http://caliburn.codeplex.com/Thread/View.aspx?ThreadId=235325 –
私はしようとしています新しい改訂版、私はあなたに知らせるでしょう。 – jonathanpeppers