我正在使用C#和Xamarin。我有两个独立的类。一个类本质上是用户界面,另一个类充当自定义构建的通用条目,供用户通过单击按钮输入数据和搜索结果。
主界面类:
Class MainPage
{
public MainPage
{
Content = new StackLayout
{
Children =
{
new InputClass // This is my custom built user entry class
{
}.Invoke(ic => ic.Clicked += WhenButtonPressedMethod) // The problem is here, I can't figure out how to call the button within the input class to fire a clicked event.
}
}
}
}
public async void WhenButtonPressedMethod (object sender, EventArgs e)
{
// Supposed to do stuff when the button is pressed
}
输入类:
public class InputClass : Grid
{
public delegate void OnClickedHandler(object sender, EventArgs e);
public event OnClickHandler Clicked;
public InputClass
{
Children.Add(
new Button {}
.Invoke(button => button.Clicked += Button_Clicked)
)
}
private void Button_Clicked(object sender, EventArgs e)
{
Clicked?.Invoke(this, e);
}
}
“InputClass”是一个网格,包含标题文本标签、条目和按钮,用户可以按下这些内容来提交和搜索数据。这个类中的按钮是我试图实际访问的,以调用/引起click事件,从而可以调用主UI类中的方法。但是,当我试图调用“InputClass”上的click事件时,我无法访问其中的按钮。我只能访问“InputClass”本身,它只是一个没有任何有用事件属性的网格。
有什么解决办法或想法吗?
如果您遇到了这里提到的相同问题,请按照本页上的代码并通读注解,它涵盖了足够的内容,能够将其拼凑起来。
1条答案
按热度按时间c2e8gylq1#
不知道为什么流畅的
Invoke
没有正确工作。按以下方式添加事件处理程序: