【问题标题】:How to get click events of buttons of ContentView page in ContentPage xamarin.forms如何在 ContentPage xamarin.forms 中获取 ContentView 页面按钮的点击事件
【发布时间】:2016-09-20 12:44:47
【问题描述】:

我在 ContentView 页面中有一些 UI(标签、按钮、编辑器、条目) 通过使用 UserControl,我在我的 ContentPage 上获取了该 UI,但是如何在 xamarin.forms 的 ContentPage 中获取 ContentView 页面按钮的单击事件

【问题讨论】:

    标签: xaml user-controls xamarin.forms


    【解决方案1】:

    有多种方法可以做到这一点,您可以使用Messaging Center 在您按下按钮时触发消息,但这不是最优雅的解决方案。

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

    public delegate void OnSomeButtonClickedDelegate();
    
    public OnSomeButtonClickedDelegate OnSomeButtonClicked { get; set; }
    

    现在,当您的按钮点击时,我们必须触发此事件。先把事件联系起来:

    myButton.Clicked += myButtonClickedEvent;
    

    在事件处理程序中做这样的事情:

    private void myButtonClickedEvent(object sender, EventArgs args)
    {
        if (OnSomeButtonClicked != null)
           OnSomeButtonClicked();
    }
    

    您必须首先检查它是否有null,因为如果没有人订阅此事件,它就不会触发它。如果有人有,请调用它。

    当然,您可以根据需要为它们提供参数等。

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

    myUserControl.OnSomeButtonClicked += onSomeButtonClickedEvent;
    

    【讨论】:

    • 您好 Gerald,我使用了您的代码,但出现错误。 这是我在页面中使用的用户控件,但我的错误是错误:方法或委托Srvy.AddQuestionsPage.onSomeButtonClickedEvent(object, System.EventArgs)' parameters do not match delegate Srvy.MultiSelect_Que.OnSomeButtonClickedDelegate()' 参数
    • 请从参数中删除object, System.EventArgs(在它给出错误的行上)或在您的委托中添加它们
    • 杰拉德 我还有一个关于用户控制的问题。如何访问内容页面中内容视图中使用的控件名称?这可能是个愚蠢的问题,但我是新手。
    • 只需创建一个返回所需控件名称的属性。或者,如果您需要的不仅仅是名称,请创建一个允许访问控件本身的属性。
    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    相关资源
    最近更新 更多