我遇到Caliburn.Micro的问题:我有ShellView.xaml和ShellViewModel.cs,我想打开新的对话窗口' NewDialogView.xaml'来自ShellViewModel。
<StackPanel> <Button x:Name="Click" Content="Click" /> </StackPanel> internal class ShellViewModel { public void Click() { Window newDialogView = new NewDialogView(); newDialogView.Show(); } }
然后当用户进入新窗口时,他/她可以点击按钮并获得一些消息:
<StackPanel> <Button x:Name="ShowMessage" Content="Click" /> </StackPanel> internal class NewDialogViewModel { public void ShowMessage() { MessageBox.Show("Hello!"); } }
问题是,当用户点击NewDialogView.xaml中的按钮时,没有任何反应。没有包含内容&#39; Hello&#39;的消息框。请帮忙!
答案 0 :(得分:2)
只是为了扩展@mvermef在上面的评论中所说的内容。
您需要使用Caliburn Micro的窗口管理器来显示您的对话框。然后Caliburn将能够在后台完成所有管道工作。通常,您将使用Caliburn引导程序使用窗口管理器创建ShellViewModel
。
internal class ShellViewModel
{
public ShellViewModel(IWindowManager theWindowManager)
{
this.windowManager = theWindowManager;
}
public void Click()
{
// Assumes that there is a NewDialogView...
var newDialogViewModel = new NewDialogViewModel();
bool? result = this.windowManager.ShowDialog(newDialogViewModel);
// result is true if user pressed ok button...
}
}
答案 1 :(得分:1)
只想分享我可能如何做的最简单的方法打开新窗口:
IWindowManager manager = new WindowManager();
public void Button()
{
manager.ShowWindow(new MyViewModel(), null, null);
}