我正在开发基于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;
}
}
Run Code Online (Sandbox Code Playgroud)如果您在视图中使用 ViewModel 事件和处理程序,请使用 WeakEventHandler 模式来消除潜在的资源泄漏。此外,多个视图可以附加到同一个视图模型。我曾经从事过使用一个 ViewModel -> 一个 View 的项目。而且还有一个 ViewModel -> 多个 View。只是在做出设计决策时需要考虑的一些事情。
| 归档时间: |
|
| 查看次数: |
3612 次 |
| 最近记录: |