WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox相关的知识,希望对你有一定的参考价值。

原文:WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox

MVVMlight 实现依赖注入 把弹框功能 和接口功能注入到各个插件中

使用依赖注入 先把所有的ViewModel都注册到到容器中 MVVMlight SimpleIoc 来实现注册

  1. public ViewModelLocator()
  2. {
  3. SimpleIoc.Default.Register<MainViewModel>();
  4. SimpleIoc.Default.Register<EditBookViewModel>();
  5. SimpleIoc.Default.Register<IDialogService, DialogService>();
  6. }
  7. private MainViewModel mainViewModel ;
  8. public MainViewModel MainViewModel
  9. {
  10. get { return mainViewModel = SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString()); }
  11. set { mainViewModel = value; }
  12. }
  13. private EditBookViewModel editBookViewModel ;
  14. public EditBookViewModel EditBookViewModel
  15. {
  16. get { return editBookViewModel = SimpleIoc.Default.GetInstance<EditBookViewModel>(Guid.NewGuid().ToString()); }
  17. set { editBookViewModel = value; }
  18. }

Message 接口

  1. public interface IDialogService
  2. {
  3. void ShowMessage(string message, string title = "提示");
  4. bool Confirm(string message, string title = "询问");
  5. }

实现类

  1. public class DialogService:IDialogService
  2. {
  3. public void ShowMessage(string message, string title = "提示")
  4. {
  5. MessageBox.Show(message, title, MessageBoxButton.OK, MessageBoxImage.Information);
  6. }
  7. public bool Confirm(string message, string title = "询问")
  8. {
  9. var result = MessageBox.Show(message, title, MessageBoxButton.OKCancel, MessageBoxImage.Question);
  10. if (result == MessageBoxResult.OK)
  11. {
  12. return true;
  13. }
  14. else
  15. {
  16. return false;
  17. }
  18. }
  19. }

在每一个View Model 的构造函数里  定义接口对象

 

  1. public EditBookViewModel(IDialogService dialogService)
  2. {
  3. DialogService = dialogService;
  4. }
  5. private IDialogService dialogService;
  6. public IDialogService DialogService
  7. {
  8. get { return dialogService; }
  9. set { dialogService = value; }
  10. }

 

并使用方法

  DialogService.ShowMessage(EditBookArgs.IsEdit ? "编辑成功" : "新增成功");

 

以上是关于WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox的主要内容,如果未能解决你的问题,请参考以下文章

C# mvvmlight model数据非自己定义可以绑定吗

C# mvvmlight model数据非自己定义可以绑定吗

利刃 MVVMLight 6:命令基础

利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用

如何使用 MVVM Light for WPF 在窗口中导航?

MVVM Light和MVVM有什么区别?