Xaml 如何在ContentPage xamarin.forms中获取ContentView页按钮的单击事件

Xaml 如何在ContentPage xamarin.forms中获取ContentView页按钮的单击事件,xaml,user-controls,xamarin.forms,Xaml,User Controls,Xamarin.forms,我在ContentView页面中有一些UI(标签、按钮、编辑器、条目) 通过使用UserControl,我可以在我的ContentPage上获得该UI,但如何在xamarin的ContentPage中获取ContentView页面按钮的单击事件。表单有多种方法,您可以使用在按下按钮时发出消息,但这不是最优雅的解决方案 根据我从您的问题中收集的信息,您已经建立了自己的用户控制。在该控件中定义委托和事件,如下所示: public delegate void OnSomeButtonClickedDe

我在ContentView页面中有一些UI(标签、按钮、编辑器、条目)
通过使用UserControl,我可以在我的ContentPage上获得该UI,但如何在xamarin的ContentPage中获取ContentView页面按钮的单击事件。表单有多种方法,您可以使用在按下按钮时发出消息,但这不是最优雅的解决方案

根据我从您的问题中收集的信息,您已经建立了自己的用户控制。在该控件中定义委托和事件,如下所示:

public delegate void OnSomeButtonClickedDelegate();

public OnSomeButtonClickedDelegate OnSomeButtonClicked { get; set; }
private void myButtonClickedEvent(object sender, EventArgs args)
{
    if (OnSomeButtonClicked != null)
       OnSomeButtonClicked();
}
现在,当您的按钮被单击时,我们必须触发此事件。首先连接事件:

myButton.Clicked += myButtonClickedEvent;
在事件处理程序中,执行如下操作:

public delegate void OnSomeButtonClickedDelegate();

public OnSomeButtonClickedDelegate OnSomeButtonClicked { get; set; }
private void myButtonClickedEvent(object sender, EventArgs args)
{
    if (OnSomeButtonClicked != null)
       OnSomeButtonClicked();
}
您必须首先检查它的
null
,因为如果没有人订阅此事件,则无法触发它。如果有人有,那么调用它

当然,您可以根据需要向他们提供参数等

现在,在使用用户控件的页面中,您可以实现:

myUserControl.OnSomeButtonClicked += onSomeButtonClickedEvent;

嗨,杰拉尔德,我用了你的代码,但我有错误。这是我在页面中使用的用户控件,但我是错误:方法或委托
Srvy.AddQuestionsPage.onSomeButtonClickedEvent(object,System.EventArgs)'参数与委托不匹配
Srvy.MultiSelect\u Que.OnSomeButtonClickedElegate()'参数请删除
对象,System.EventArgs
从参数(在它给出错误的行上)或将它们添加到您的delegateGerald中我还有一个关于usercontrol的问题。如何访问内容页的contentview中使用的控件名称?这可能是一个愚蠢的问题,但我是新手。只需创建一个返回所需控件名称的属性即可。或者,如果您需要的不仅仅是名称,请创建一个允许访问控件本身的属性。