【问题标题】:Accessing a button click of User Control in Parent page UWP在父页面 UWP 中访问用户控件的按钮单击
【发布时间】:2019-04-24 03:47:39
【问题描述】:

我创建了一个名为 UserControl 的用户控件。

这个用户控件有一个标签和一个按钮。

我在我的一个页面(比如说 Page1)中使用了这个用户控件,但是这个用户控件是根据 DB 中的条目生成的。例如:我在 DB 中有一个条目,其中有一列名为“UC1”。所以在页面(Page1)加载时,我在页面上动态添加了这个用户控件。

现在,当页面加载时,我希望在后面的 Page1 代码中实现按钮单击方法。谁能让我知道这怎么可能。我正面临问题,因为使用控件是动态生成的,并且可以根据 DB 条目在页面中生成多个用户控件实例。

简而言之,我想在父页面后面的代码中为在父页面内动态生成的用户控件调用一个方法

【问题讨论】:

    标签: c# .net user-controls uwp-xaml


    【解决方案1】:

    假设Button命名为‘btn1’,TextBlock命名为‘textBlock1’,你可以这样连线

    for (int i = 0; i < 3; i++)
    {
        MyUserControl c = new MyUserControl();
        c.btn1.Click += (o, args) =>   
        {
            c.textBlock1.Text = DateTime.Now.ToString(); 
        };
    
        //then add the user control to the page
        this.stackPanel1.Children.Add(c);
    }
    

    并为元素添加一个 x:FieldModifier 属性,以便您可以从外部访问它们。

    <Button x:Name=“btn1” x:FieldModifier=“public” ...
    

    【讨论】:

    • 在将事件处理程序设置为公开后,我可以按上述方式设置事件处理程序。但是一旦我点击按钮,甚至不会触发。还有什么需要做的吗?
    • 谢谢,我现在可以访问了。现在已经从父页面触发了按钮单击事件,我如何访问用户控件中定义的其他控件。例如:单击特定按钮后,我需要在用户控件中更改 TextBlock 的文本。
    • @MadMax 看我更新的答案,我用一个lambda表达式替换事件处理程序,在lambda表达式中,你可以访问具体的UserControl。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2015-05-02
    相关资源
    最近更新 更多