0
私はカスタムコントロールを作成しました。私はこのようなContentPageでこれらのカスタムコントロールの一部を作成外部からグリッドイベントのイベントボタンを受信
using Xamarin.Forms;
namespace MyApp
{
public class clsButton : ContentView
{
private Grid _grid;
private Button _button;
public clsButton()
{
_grid = new Grid
{
Margin = new Thickness(0),
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
};
_grid.BindingContext = this;
_button = new Button()
{
};
_button.Clicked += async (sender, e) =>
{
//I tried different things here, but none gave me the right results. I need to "bubble" this click to the outside
return;
};
_grid.Children.Add(_button, 0, 0);
this.Content = _grid;
}
}
}
:
_MyButton = new clsImageButton()
{
};
var nTapGestureRecognizer = new TapGestureRecognizer();
nTapGestureRecognizer.Tapped += OnButtonClicked;
_MyButton.GestureRecognizers.Add(nTapGestureRecognizer);
そして、これは同じContentPageの空隙である それはボタンが配置されたグリッドで構成されています。
async void OnButtonClicked(object sender,EventArgs e)
{
//I don't managed to get here
}
これは機能しません。 "OnButtonClicked"は決して呼び出されません。
私はカスタムコントロール内からイベントを発生させる必要があると思います。 私はいくつかのことを試みましたが、どれも成功しませんでした。
これを正しく行うにはどうすればよいですか?あなたのclsButton
で
ありがとうございます。エラーが表示されます。 "clsButton.ButtonClicked:イベントプロパティにアクセサの追加と削除が必要です。"おそらく "public EventHandler ButtonClicked {get; set;}"を意味しますか? – tmighty
私はそれを改善することができました。 :-)クラス内: public EventHandler ButtonClicked; _button.Clicked + = async(sender、e)=> { ButtonClicked ?Invoke(sender、e); };外 : _button.ButtonClicked + =非同期(送信者、E)=> { // Debug.Assertの(偽)ここで応えます。 };それに応じてあなたの返事を変更してくださいできますか? – tmighty
"{get; set;}"を削除する必要があると思います。少なくとも私のためにはそれで動作しません。 – tmighty