Xamarin.Forms

时间:2016-04-22 05:53:01

标签: c# xamarin event-handling custom-controls xamarin.forms

我试图在Xamarin.Forms中为自定义控件添加自定义事件。请看下面的代码:

public delegate void ImageSelectedHandler(object sender, EventArgs e);
public static event ImageSelectedHandler OnImageSelected;

private void OnImageBtnTapped(object sender, EventArgs e)
{
   if (OnImageSelected != null) 
   {
        OnImageSelected(sender,e);
   }
}

在使用控件的页面中:

SelectMultipleBasePage<ListItems>.OnImageSelected += ListPage_OnImageSelected;

void ListPage_OnImageSelected(object sender, EventArgs e)
{
  //code here
}

我可以使用上面的代码访问该事件。但我想在不同的页面上使用控件。在不同的页面上,不同的OnImageSelected甚至会表现不同。因此我想有这样的事情:

SelectMultipleBasePage<ListItems> multiPage = new SelectMultipleBasePage<ListItems>(items);
multiPage.OnImageSelected += ListPage_OnImageSelected;

但是当我这样做时,我得到错误:

  

无法使用实例引用访问;使用类型名称来限定它

在访问活动时我做错了什么?

1 个答案:

答案 0 :(得分:1)

只需删除static

public event ImageSelectedHandler OnImageSelected;

然后你可以打电话

SelectMultipleBasePage<ListItems> multiPage = new SelectMultipleBasePage<ListItems>(items);
multiPage.OnImageSelected += ListPage_OnImageSelected;

当然你也必须改变静态电话。