簡単な答え:コンテキストパラメーターを指定せずにダイアログを表示してみてください。C# 4.0で導入されたオプションの引数null
を利用して、デフォルト値のままにしておきます。
this.windowManager.ShowDialog(MyViewModel, settings: settings);
長い答え: メソッドWindowManager.ShowDialog()は次のようになります。
/// <summary>
/// Shows a modal dialog for the specified model.
/// </summary>
/// <param name="rootModel">The root model.</param>
/// <param name="context">The context.</param>
/// <param name="settings">The optional dialog settings.</param>
public virtual void ShowDialog(object rootModel,
object context = null,
IDictionary<string, object> settings = null)
{
var view = EnsureWindow(rootModel,
ViewLocator.LocateForModel(rootModel, null, context));
ViewModelBinder.Bind(rootModel, view, context);
var haveDisplayName = rootModel as IHaveDisplayName;
if(haveDisplayName != null &&
!ConventionManager.HasBinding(view, ChildWindow.TitleProperty))
{
var binding = new Binding("DisplayName") { Mode = BindingMode.TwoWay };
view.SetBinding(ChildWindow.TitleProperty, binding);
}
ApplySettings(view, settings);
new WindowConductor(rootModel, view);
view.Show();
}
コンテキスト引数を呼び出しEnsureWindow()
て渡すことに注意してください。この引数をstring.Empty (または"" ) として指定すると、Caliburn の実装でさらに別の方法で処理され、提供されたビューモデルに対応するビューを見つけるための値だけになります。null
この助けを願っています。