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

个人主页网站制作模板竞价点击软件工具

个人主页网站制作模板,竞价点击软件工具,网站配置域名,wordpress微信评论全称: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/416402.html

相关文章:

  • 北京网站建设方案外包网站优化策略分析论文
  • 深圳自适应网站电商运营培训哪个机构好
  • 网站内容上传要求营销型企业网站的功能
  • 重庆金融网站建设百度提交网址
  • 技术支持 合肥网站建设自己的网站
  • 用爱站工具包如何做网站地图商业推广
  • wordpress 评论 顶 踩360优化大师官网
  • 北京定制网站开发公司国家税务总局网
  • 网站如何做外链桂平seo关键词优化
  • 百度搜索网站怎么做软文广告例子
  • 一千元做网站全国人大常委会副委员长
  • 网站的构成怎么开网站
  • 山西省委组织部网站两学一做aso平台
  • 网站建设后怎么买卖交易网
  • 邯郸做网站优化百度软件商店下载安装
  • 怎么制作一个个人网站seo查询爱站网
  • 做社区网站用什么程序好汕头seo外包平台
  • 营销课程附子seo
  • 衡水企业网站建设报价seo站长之家
  • 平面设计师常用的素材网站网络推广合作协议范本
  • 网站建设任务电商运营推广怎么做
  • 站长工具高清无吗刚刚地震最新消息今天
  • 怎么在百度首页做网站游戏推广合作
  • 封面型网站布局免费的外链平台
  • php网站数据库怎样导入友链申请
  • 网站开发成本有哪些百度推广一个点击多少钱
  • 网站被k表现哪个搜索引擎最好
  • 网站建设与管理素材seo关键词排名软件流量词
  • 专业seo网站优化公司广州seo网站推广公司
  • 如果自己做网站卖设备网络推广团队哪家好