編集:
新しい情報、ロガーを動作させることができました (正直なところ、cm にロガーがあるとは思いもしませんでした!) を使用しようとすると、このメッセージが表示されますTryClose()
。
TryClose requires a parent IConductor or a view with a Close method or IsOpen property
私はこれに何日も立ち往生しており、研究はゼロになりました.この問題について以前に質問を投稿しようとしましたが、回答が得られなかったので、私はそれを正しく表現しなかったと思います.
次のコードを含むビューとビューモデル ContentView/Modelがあります。
コンテンツビュー:
<MenuItem Header="New Project" x:Name="OpenProject" cal:Message.Attach="[Event Click] = [Action NewProject()]"/>
ContentViewModel :
public void NewProject()
{
NewProjectViewModel viewModel = new NewProjectViewModel(_projectManager);
_windowManager.ShowWindow(viewModel);
//If the result is true, we have a new project, otherwise they cancelled the window.
if (viewModel.Result)
{
Project newP = new Project(0, viewModel.ProjectNo, viewModel.ProjectName, 0, 0);
_projectManager.Insert(newP);
}
}
ビューモデルNewProjectViewModelには次のものがあります。
public void Create()
{
this.Result = true;
TryClose(true);
}
以前はダイアログの [ OK ] ボタンでmessage.attach を使用していたのと同じように呼び出されます。
ただし、問題はTryClose()
常にダイアログを閉じることができないことです。caliburn.micro のソースがないため、内部でデバッグすることはできませんが、常に null を返すため、TryClose()
実行(GetView() As Window).Close()
も失敗します。GetView()
このダイアログを閉じる方法がまったくわからないので、助けや提案をいただければ幸いです。
編集: 以前の質問と同様に、これに関する回答が得られていないように見えるため、情報が不足していると想定します。この問題を理解するために、ビューファーストのアプローチを使用することに何か関係があると思います。
NewProjectViewには次のものがあります。
xmlns:cal="http://www.caliburnproject.org"
cal:Bind.Model="ShippingClient.ViewModels.NewProjectViewModel"
これは、通常使用される自動方法ではなく、ビューモデルをバインドするために使用されます。おそらくこれがGetView()
null を返す理由ですか?