原文: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 ? "编辑成功" : "新增成功");
原文地址:https://www.cnblogs.com/lonelyxmas/p/12075815.html
时间: 2024-11-08 20:42:54