2016-04-22 15 views
1

私はXamarin.Formsのカスタムコントロールにカスタムイベントを追加しようとしていました。私は上記のコードを使用してイベントにアクセスすることができXamarin.Formsのカスタムイベント

SelectMultipleBasePage<ListItems>.OnImageSelected += ListPage_OnImageSelected; 

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

:コントロールを使用しているページで

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); 
    } 
} 

:以下のコードを見てみてください。しかし、私は別のページでコントロールを使用したいと思います。異なったページでは、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

イベントを静的にすることで!あなたがこのクラスにのみローカルにして、別のクラスでアクセスしたい場合は、 。 これはMyclassname.OnImageSelectedとしてアクセスする必要があります –

答えて

1

staticを削除するだけです。

public event ImageSelectedHandler OnImageSelected; 

次に、あなたがあまりにも、静的呼び出しを変更する必要はもちろん

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

を呼び出すことができます。

+0

それは私のためには動作しません。 'Error 入れ子タイプ 'AppName.SelectMultipleBasePage .WrappedItemSelectionTemplate' – Arti

+0

を介して、外部タイプ 'AppName.SelectMultipleBasePage 'の非静的メンバーにアクセスすることはできません。[link ](http://stackoverflow.com/questions/36714348/how-to-create-an-event-for-custom-control/36724924#36724924) – Arti

+0

複数のインスタンスを使用する場合は、静的イベントは使用できません。このコントロール。 –

関連する問題