2016-04-22 4 views
1

Я пытался добавить пользовательское событие в свой пользовательский элемент управления в 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; 

Но когда я делаю, что я получаю ошибку:

Cannot be accessed with an instance reference; qualify it with a type name instead

Что я делаю неправильно в доступе событие?

+1

Сделайте статичным событие! u r делает его локальным только для этого класса, , когда вы хотите получить доступ к нему в другом классе. u будет иметь к нему доступ как Myclassname.OnImageSelected –

ответ

1

Просто удалите static.

public event ImageSelectedHandler OnImageSelected; 

Тогда вы можете позвонить

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

Конечно, вы должны изменить статический вызов, тоже.

+0

Это не работает для меня. Это дает мне сообщение об ошибке: 'Error \t \t 14 Не удается получить доступ к нестатический члену внешнего типа«AppName.SelectMultipleBasePage »с помощью вложенного типа«AppName.SelectMultipleBasePage .WrappedItemSelectionTemplate» – Arti

+0

могли бы вы взглянуть на мой предыдущий вопрос: [ссылка ] (http://stackoverflow.com/questions/36714348/how-to-create-an-event-for-custom-control/36724924#36724924) – Arti

+0

вы не можете использовать статические события, если вы хотите использовать несколько экземпляров этот контроль. –