【问题标题】:Custom event in Xamarin.FormsXamarin.Forms 中的自定义事件
【发布时间】:2016-04-22 05:53:00
【问题描述】:

我试图将自定义事件添加到 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;

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

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

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

【问题讨论】:

  • 通过使事件静态化!当你想在另一个类中访问它时,你只将它设置为这个类的本地。你必须以 Myclassname.OnImageSelected 的身份访问它

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


【解决方案1】:

只需删除static

public event ImageSelectedHandler OnImageSelected;

然后就可以调用了

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

当然你也得改一下静态调用。

【讨论】:

  • 它对我不起作用。它给了我错误:`Error 14 Cannot access a non-static member of external type 'AppName.SelectMultipleBasePage' via nested type 'AppName.SelectMultipleBasePage.WrappedItemSelectionTemplate'
  • 能否请您看一下我之前的问题:link
  • 如果要使用此控件的多个实例,则不能使用静态事件。
  • 添加了对您其他问题的回答。
猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 2020-09-24
  • 2018-02-17
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
  • 2022-08-14
  • 2017-02-10
相关资源
最近更新 更多