当前位置: 首页 > wzjs >正文

个人主页网站制作模板互联网推广运营是干什么的

个人主页网站制作模板,互联网推广运营是干什么的,关注济南网站建设,软件定制开发订单全称:Inversion of Control,控制反转 场景:A页面需要调用B/C页面等,防止直接在VM中新建别的页面实例,使用IOC设计架构; 创建Service,在Service中实现页面的实例创建和定义页面输入输出参数。 在…

全称:Inversion of Control,控制反转
场景:A页面需要调用B/C页面等,防止直接在VM中新建别的页面实例,使用IOC设计架构;
创建Service,在Service中实现页面的实例创建和定义页面输入输出参数。
在MainView中注册A、B、C页面的Service。
A需要调用B时,调用B的Service。

此架构思路可以在MVVM基础上,减少不同模块的耦合。
可以所有模块的页面都注册服务。让VM之间不存在互相调用

手动实现

IOC类

public static class IoC
{private static readonly Dictionary<Type, object> MAP;static IoC(){MAP = new Dictionary<Type, object>();}public static void Register<T>(T instance){MAP[typeof(T)] = instance;}public static T Provide<T>(){if (MAP.TryGetValue(typeof(T), out object obj) && obj is T t){return t;}throw new Exception("No registered service of type " + typeof(T));}
}

IView接口

public interface IView
{/// <summary>/// Close the view with the given result/// </summary>void CloseDialog(bool result);
}

页面B实现IView

public partial class ChildValuePopup : Window, IView
{public ChildValueEditPopupViewModel ViewModel => (ChildValueEditPopupViewModel)this.DataContext;public ChildValuePopup(){InitializeComponent();DataContext = new ChildValueEditPopupViewModel(this);}public void CloseDialog(bool result){this.DialogResult = result;this.Close();}
}

IViewBService页面B的Service接口

public interface IChildValueEditPopupService
{
//打开B页面方法,及其输入输出参数Task<ChildValueEditPopupResult> ChildValueEditPopupOpenAsync(GirdDataModel data);ChildValueEditPopupResult ChildValueEditPopupOpen(GirdDataModel data);
}//输出参数类定义
//IsSuccess是否成功打开B页面
public class ChildValueEditPopupResult : ObservableObject
{public bool IsSuccess { get; set; }private object _setValue;public string code { get; set; }public object setValue { get=>_setValue; set=>OnPropertyChanged(ref _setValue,value); }
}

ViewBService页面B的Service实现

internal class ChildValueEditPopupService : IChildValueEditPopupService
{public ChildValueEditPopupResult ChildValueEditPopupOpen(GirdDataModel data){var popup = new ChildValuePopup();popup.ViewModel.Code = data.code;popup.ViewModel.ChildValues = Copy.DeepCopy( data.childValues);popup.ViewModel.SetValue = data.setValue;bool result = popup.ShowDialog() == true;if (!result) {return new ChildValueEditPopupResult() { IsSuccess = false};}return new ChildValueEditPopupResult(){IsSuccess = true,code = popup.ViewModel.Code,setValue = popup.ViewModel.SetValue,}; }public async Task<ChildValueEditPopupResult> ChildValueEditPopupOpenAsync(GirdDataModel data) {return await Application.Current.Dispatcher.InvokeAsync(() => {return ChildValueEditPopupOpen(data);});}
}

注册服务,全局页面MainView

public MainWindow()
{InitializeComponent();IoC.Register<IChildValueEditPopupService>(new ChildValueEditPopupService());
}

使用服务,页面A打开页面B

private void ChildValueEditPopupOpen(GirdDataModel data) {IChildValueEditPopupService service = IoC.Provide<IChildValueEditPopupService>();ChildValueEditPopupResult res = service.ChildValueEditPopupOpen(data);if (res.IsSuccess) {data.setValue = res.setValue;}
}
http://www.dtcms.com/wzjs/291329.html

相关文章:

  • 百度网页链接seo外链发布技巧
  • 包牛牛网站怎么做佛山网站搜索排名
  • 商城网站备案百度统计官网
  • iis 启用网站 浏览提示service智能建站abc
  • 石家庄网站建设hebsoo安卓优化大师手机版下载
  • 公司做网站的费用用途写什么沧州百度推广公司
  • 福建祥盛建设有限公司网站正规网站优化公司
  • 定西网站建设百度公司排名
  • 申请域名后可以做自己的网站吗app联盟推广平台
  • 网站项目风险免费站长工具
  • 住房建设局网站首页太原网站推广排名
  • 专业做网站的企业个人推广平台
  • wordpress 编辑器全屏2022百度seo优化工具
  • 长沙服务专业的建网站冯耀宗seo课程
  • 常用的cms建站系统个人在百度上发广告怎么发
  • 自建网站的流程百度搜索高级搜索
  • 网站建设实习日记品牌广告投放
  • 竞价系统莆田网站建设优化
  • 做生存曲线网站网络服务运营商
  • 什么是市场营销策划seo网站优化推广费用
  • 华强北电子商城南京seo新浪
  • 网站的意义志鸿优化设计答案
  • 外省公司做网站备案sem竞价专员
  • 淮安市做网站长安网站优化公司
  • 网站引导页动画百度知道官网
  • 佛山做网站优化公司外链推广网站
  • 包头市建设工程质量监督站网站竞价外包
  • 南宁网站建设公司哪家好国外网站
  • 南平做网站好用的seo软件
  • 电影网站建设推广如何开发一款app软件