从 ModalDialog 调用 ShellViewModell 上的方法
Call a method on ShellViewModell from ModalDialog
我有一个可以打开 ModalDialog 的 ShellViewModel window。用户在 ModalWindow 中输入一些数据并单击一个按钮。这应该关闭 ModalWindow 并在 ShellViewModel 中执行一个方法。
我已经可以关闭 ModalDialog,但不知道如何调用 ShellViewModel 中的 ShowTables 方法。怎么叫呢?
ShellViewModel
namespace SQLInserter
{
using Caliburn.Micro;
using System.ComponentModel.Composition;
using System.Dynamic;
using System.Windows.Controls.Primitives;
[Export(typeof(IShell))]
public class ShellViewModel : Screen, IShell
{
readonly IWindowManager windowManager;
[ImportingConstructor]
public ShellViewModel(IWindowManager windowManager)
{
this.windowManager = windowManager;
}
/// <summary>
/// this needs to be called after
// TryClose(); in ConnnectionViewModel.Connect() is executed
/// </summary>
public void ShowTables()
{
}
public void ShowConnectiom()
{
windowManager.ShowDialog(new ConnectionViewModel(), "Connection");
}
}
}
ConnectionViewModel
using Caliburn.Micro;
using System.Diagnostics;
using System.Linq;
namespace SQLInserter
{
public class ConnectionViewModel : Screen
{
public ConnectionViewModel()
{
}
public void Connect()
{
TryClose();
}
}
}
public void ShowConnection(){
var connvm = new ConnectionViewModel();
IDictionary settings = new Dictionary();
settings["WindowStartupLocation"] = WindowStartupLocation.CenterScreen;
//Does something with the connvm object, which allows
//continued process once dialog is closed.
windowManager.ShowDialog(connvm, null,settings);
if( connvm != null && connvm.Connected){
ShowTables();
}
}
或者使用基于对话框关闭的 EventAggregator 消息...在这种情况下,将根据您指定的设置在 ShellViewModel 中处理。
我有一个可以打开 ModalDialog 的 ShellViewModel window。用户在 ModalWindow 中输入一些数据并单击一个按钮。这应该关闭 ModalWindow 并在 ShellViewModel 中执行一个方法。
我已经可以关闭 ModalDialog,但不知道如何调用 ShellViewModel 中的 ShowTables 方法。怎么叫呢?
ShellViewModel
namespace SQLInserter
{
using Caliburn.Micro;
using System.ComponentModel.Composition;
using System.Dynamic;
using System.Windows.Controls.Primitives;
[Export(typeof(IShell))]
public class ShellViewModel : Screen, IShell
{
readonly IWindowManager windowManager;
[ImportingConstructor]
public ShellViewModel(IWindowManager windowManager)
{
this.windowManager = windowManager;
}
/// <summary>
/// this needs to be called after
// TryClose(); in ConnnectionViewModel.Connect() is executed
/// </summary>
public void ShowTables()
{
}
public void ShowConnectiom()
{
windowManager.ShowDialog(new ConnectionViewModel(), "Connection");
}
}
}
ConnectionViewModel
using Caliburn.Micro;
using System.Diagnostics;
using System.Linq;
namespace SQLInserter
{
public class ConnectionViewModel : Screen
{
public ConnectionViewModel()
{
}
public void Connect()
{
TryClose();
}
}
}
public void ShowConnection(){
var connvm = new ConnectionViewModel();
IDictionary settings = new Dictionary();
settings["WindowStartupLocation"] = WindowStartupLocation.CenterScreen;
//Does something with the connvm object, which allows
//continued process once dialog is closed.
windowManager.ShowDialog(connvm, null,settings);
if( connvm != null && connvm.Connected){
ShowTables();
}
}
或者使用基于对话框关闭的 EventAggregator 消息...在这种情况下,将根据您指定的设置在 ShellViewModel 中处理。