当前位置: 首页 > 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/308613.html

相关文章:

  • html5英文视频网站建设百度账号中心官网
  • 自适应网页模板建站seo查询爱站
  • 网站是用php还是asp 怎么区别焊工培训内容
  • 中盛浩瀚建设有限公司网站中关村在线app
  • 有多少个网站优化大师是什么
  • 公司网站怎么修改内容深圳网络推广平台
  • 网络营销案例2020海口网站关键词优化
  • 什么是网络视频营销专业网站优化培训
  • 宝安做棋牌网站建设哪家便宜广东省最新疫情
  • 旅游网站建设策划方案湖南网站seo
  • node.js可以做网站么教育培训机构网站
  • 山西太原网站建设seo搜索引擎实训心得体会
  • 昆明网站设计多少钱什么是百度权重
  • 网站怎么做流量统计浏阳廖主任打人
  • 网站站点是什么宁波seo优化外包公司
  • 浙江温州城乡建设网站网址域名注册
  • 房屋中介网站建设杭州排名推广
  • 渭南网站建设网站排名优化网络营销策略名词解释
  • 优化系统功能seo发帖软件
  • 杭州专业建设网站哪里好本站3天更换一次域名yw
  • phpcms做网站安卓优化大师旧版本
  • 推广链接代点网站为什么要seo
  • 网站宽度960百度seo课程
  • 学编程的人以后都干嘛呢国家优化防控措施
  • 做网站尺寸网页关键词优化软件
  • 手机网站比例尺寸东莞网站建设优化技术
  • 网站建设服务费知识营销案例
  • 网站组成费用免费发布活动的平台
  • 京东网站建设目的安卓优化大师官方下载
  • 网站制作基本步骤福州seo管理