xamarin 是否有办法激活存在于另一个类中的Button?

b1payxdu  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(127)

我正在使用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”本身,它只是一个没有任何有用事件属性的网格。
有什么解决办法或想法吗?
如果您遇到了这里提到的相同问题,请按照本页上的代码并通读注解,它涵盖了足够的内容,能够将其拼凑起来。

c2e8gylq

c2e8gylq1#

不知道为什么流畅的Invoke没有正确工作。
按以下方式添加事件处理程序:

public MainPage
{
    var ic = new InputClass();
    ic.Clicked += WhenButtonPressedMethod;
    Content = new StackLayout
    {
        Children = { ic }
    }
}

public InputClass
{
    var button = new Button;
    button.Clicked += Button_Clicked;
    Children.Add(button);
}

相关问题