zoukankan      html  css  js  c++  java
  • 利用委托,将值/对象从自定义控件传递至主页面

    一直不懂委托、事件是如何实现的。

    觉得好像是要自己实现Button的各种事件(比如Click)一样高大上

    偶然的看到一边文章,才对它们有了初步的了解。

    此处,我要实现是,在点击自定义控件选中某一值后,隐藏控件,之后在主页面显示该值

    这里就用双十一网购为例,来说说实现方法。买家、卖家、快递, 分别表示主页面、控件、委托。

    卖家要将货物送给买家,就必须经过快递这个第三方。

    所以得存在这个快递公司,于是定义一个委托:

    public delegate void SendArgs(object sender, SendSelectItem args);  //定义一个委托,sender可以指快递公司, args就是要送的货物

    货物可以只是简单的变量,也可以是自定义的类(比如包含订单,物品),但需要继承EventArgs类:

    public class Item
    {
      public string Order { set; get; } //订单号
      public string Article{ set; get; }   //物品
    }
    
    public class SendSelectItem:EventArgs   //要传的数据
    {   public Item SelectedItem { get; set; }   public SendSelectItem(Item selectItem)   {   this.SelectedItem = selectItem;   } }

    这样子, 快递公司就已经有了。

    现在卖家(控件)那边就要开始通知快递公司,说要发货了。

    public event SendArgs OnSend;  //定义事件

    在要处理的时候

    private void inView_Tapped(object sender, TappedRoutedEventArgs e)  //触发的时候开始提交快递
    {
      ListView listView
    = sender as ListView;  //取得快递,本身已经绑定数据   if (OnSend != null)
      {  
        OnSend(
    this, new SendSelectItem((Item)listView.SelectedItem));
    }

    在卖家那边(主页面)中

    ExpressSelect为自定义控件对象

    ExpressSelect.OnSend+= ExpressSelect_OnSend;//事件
    
    void ExpressSelect_OnSend(object sender, SendSelectItem e)
    {
      this.SelectedItem =  e.SelectedItem;
      this.Code.Text = e.SelectedItem.Order;  //赋值
      this.Code.Tag = e.SelectedItem.Article;  //赋值
    }
  • 相关阅读:
    进程 触发器
    关于 if条件 光标 循环的综合应用
    3-15记录
    day3.python 学习之列表
    day2: python3.5学习——逻辑判断
    day1: python3.5学习
    OpenGL_曲线函数
    OpenGL_赛平斯基垫片
    【quick-cocos2d-x 游戏开发之一】开发工具sublime text及其强力插件QuickXDev
    Python正则表达式指南
  • 原文地址:https://www.cnblogs.com/yffswyf/p/4094692.html
Copyright © 2011-2022 走看看