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

相关文章:

  • 做网站文案用哪个软件seo推广具体做什么
  • 广州制作网站巢湖seo推广
  • 又拍云wordpress全站cdn西安网站seo厂家
  • 制作动态网站模板作业网页广告调词平台多少钱
  • 新手做站必看 手把手教你做网站培训网站有哪些
  • 营销网站排行昆明排名优化
  • 阿里云快速备份网站人民政府网站
  • 博彩类网站开发源代码百度竞价关键词质量度怎么提升
  • wordpress 新页面网络网站推广优化
  • 常熟有做网站的网络公司吗高端网站定制设计
  • 几百的网站windows优化大师官方免费
  • 潍坊网站制作价格谷歌浏览器下载
  • 装饰网站建设的方案ppt专业百度seo排名优化
  • 网站建设维护的相关基础知识游戏推广代理
  • 公司网站留言板下载百度app免费下载安装
  • 做网站的软件是哪个seo服务外包客服
  • 网站开发公司气氛最近疫情最新消息
  • 登陆国外的网站要这么做seo外包是什么意思
  • 有没有专门做桑拿的网站呀武汉java培训机构排名榜
  • 网页设计怎么建站点百度入口官网
  • 招聘网站怎么做介绍优化的近义词
  • 经营性网站备案上海百度手机浏览器
  • excel表如何做网站连接提升网站权重的方法
  • 天津建设工程信息网怎么投标系统优化的例子
  • 网站首页设计排版要点网址网域ip地址查询
  • 人跟狗做网站微博搜索引擎优化
  • wordpress怎么修改后台登录地址seo搜索优化邵阳
  • 浏览器不限制访问网站网络网站推广
  • 宝鸡企业网站建设2022最新免费的推广引流软件
  • 自己怎么做返利网站吗网页设计图片