我需要制作自定义点击监听器,但我在语法方面遇到了一些问题。
这更像是一个c#问题,因为我试图在Xamarin.Android上实现这个问题
这是我的自定义点击监听器
public class OnSingleClickListener : Java.Lang.Object, View.IOnClickListener
{
private readonly Action onSingleClick;
public OnSingleClickListener()
{
}
public OnSingleClickListener(Action onSingleClick)
{
this.onSingleClick = onSingleClick;
}
public void OnClick(View v)
{
onSingleClick?.Invoke();
}
}
在我的片段中,我实施了:
button.SetOnClickListener(new OnSingleClickListener(()
=> OnButtonClicked(HowDoIPassEventArgs?)));
然后
private void OnButtonClicked(HowDoIGetTheseEventArgs?)
{
ViewModel.buttonCommand.Execute(HowDoIGetTheseEventArgs?);
}
如何通过我的新方法获取此点击的EventArgs' OnButtonClicked'?
///////// 编辑:这是之前实现的方式 -
button.Click += OnButtonClicked;
private void OnButtonClicked(object sender, EventArgs args) //I want these same EventArgs
{
ViewModel.buttonCommand.Execute(args);
}
我只想使用我的新自定义点击监听器
来实现它答案 0 :(得分:1)
使用EventHandler
与Action
并定义您希望在处理程序中传递的自定义EventArgs
子类。
public class OnClickListener : Java.Lang.Object, View.IOnClickListener
{
public class ClickEventArgs : EventArgs
{
object someObjectYouWantToPass; // replace with a strong object type that you are passing
public ClickEventArgs(object someObjectYouWantToPass) => this.someObjectYouWantToPass = someObjectYouWantToPass;
}
readonly EventHandler handler;
public OnClickListener(EventHandler handler) => this.handler = handler;
public void OnClick(View v)
{
handler?.Invoke(v, new ClickEventArgs(null)); // replace null w/ your custom event object(s)
}
}