WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox相关的知识,希望对你有一定的参考价值。
原文:WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox
MVVMlight 实现依赖注入 把弹框功能 和接口功能注入到各个插件中
使用依赖注入 先把所有的ViewModel都注册到到容器中 MVVMlight SimpleIoc 来实现注册
-
- public ViewModelLocator()
- {
- SimpleIoc.Default.Register<MainViewModel>();
- SimpleIoc.Default.Register<EditBookViewModel>();
- SimpleIoc.Default.Register<IDialogService, DialogService>();
- }
-
-
- private MainViewModel mainViewModel ;
-
- public MainViewModel MainViewModel
- {
- get { return mainViewModel = SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString()); }
- set { mainViewModel = value; }
-
- }
-
- private EditBookViewModel editBookViewModel ;
-
- public EditBookViewModel EditBookViewModel
- {
- get { return editBookViewModel = SimpleIoc.Default.GetInstance<EditBookViewModel>(Guid.NewGuid().ToString()); }
- set { editBookViewModel = value; }
- }
Message 接口
- public interface IDialogService
- {
- void ShowMessage(string message, string title = "提示");
- bool Confirm(string message, string title = "询问");
- }
实现类
- public class DialogService:IDialogService
- {
- public void ShowMessage(string message, string title = "提示")
- {
- MessageBox.Show(message, title, MessageBoxButton.OK, MessageBoxImage.Information);
- }
-
- public bool Confirm(string message, string title = "询问")
- {
- var result = MessageBox.Show(message, title, MessageBoxButton.OKCancel, MessageBoxImage.Question);
- if (result == MessageBoxResult.OK)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
在每一个View Model 的构造函数里 定义接口对象
- public EditBookViewModel(IDialogService dialogService)
- {
-
- DialogService = dialogService;
- }
- private IDialogService dialogService;
-
- public IDialogService DialogService
- {
- get { return dialogService; }
- set { dialogService = value; }
- }
并使用方法
DialogService.ShowMessage(EditBookArgs.IsEdit ? "编辑成功" : "新增成功");
以上是关于WPF 高级篇 MVVM (MVVMlight) 依赖注入使用Messagebox的主要内容,如果未能解决你的问题,请参考以下文章
C# mvvmlight model数据非自己定义可以绑定吗
C# mvvmlight model数据非自己定义可以绑定吗
利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用