我正在开发基于PRISM框架(Unity Container)的WPF 4.0-MVVM应用程序.
我想知道在mvvm模式中实现对话框的最佳方法是什么.我打算在我的应用程序中使用很多,所以我想要一些可重用的东西.
小智 2
由于您正在使用 Prism/Unity 为您的视图模型实现中介模式。
ViewModel 现在使用 IDialogService 来显示所需的对话框。
public interface IDialogService
{
    void    RegisterDialog  (string dialogID, Type type);
    bool?   ShowDialog      (string dialogID);
}
public class DialogService : IDialogService
{
    private IUnityContainer       m_unityContainer;
    private DialogServiceRegistry m_dialogServiceRegistry;
    public DialogService(IUnityContainer unityContainer)
    {
        m_unityContainer = unityContainer;
        m_dialogServiceRegistry = new DialogServiceRegistry();
    }
    public void RegisterDialog(string dialogID, Type type)
    {
        m_dialogServiceRegistry.RegisterDialog(dialogID, type);
    }
    public bool? ShowDialog(string dialogID)
    {
        Type type = m_dialogServiceRegistry[dialogID];
        Window window  = m_unityContainer.Resolve(type) as Window;
        bool? dialogResult = window.ShowDialog();
        return dialogResult;
    }
}
如果您在视图中使用 ViewModel 事件和处理程序,请使用 WeakEventHandler 模式来消除潜在的资源泄漏。此外,多个视图可以附加到同一个视图模型。我曾经从事过使用一个 ViewModel -> 一个 View 的项目。而且还有一个 ViewModel -> 多个 View。只是在做出设计决策时需要考虑的一些事情。