You need to enable JavaScript to run this app. Xamarin如何为另一按钮动态创建的按钮添加点击事件处理程序
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin如何为另一按钮动态创建的按钮添加点击事件处理程序

动态生成按钮的点击事件绑定实现方案

你直接在创建Button实例的时候绑定点击事件即可,需要传递对应收藏内容的话可以用CommandParameter携带参数,修改后的代码如下:

Frame frame;
private void OnAdd(object sender, EventArgs e)
{ 
    // 替换为你实际选中的、需要收藏的业务数据
    var favoriteTarget = "当前选中的待收藏内容";

    parent.Children.Add(frame = new Frame
    {
        BorderColor = Color.Black,
        Padding = new Thickness(5),
        Content = new StackLayout
        {
            Orientation = StackOrientation.Horizontal,
            Children =
            {
                new Button
                {
                    Text = "添加收藏",
                    // 直接绑定点击事件处理方法
                    Clicked = OnAddToFavorite,
                    // 把当前收藏的内容存到按钮参数里,点击时可以读取
                    CommandParameter = favoriteTarget
                },
                new Label
                {
                    Text = favoriteTarget, 
                    FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)),
                    VerticalOptions = LayoutOptions.Center
                }
            }
        }
    });
}

// 动态按钮对应的收藏处理逻辑
private void OnAddToFavorite(object sender, EventArgs e)
{
    if (sender is Button currentBtn && currentBtn.CommandParameter is string targetContent)
    {
        // 这里写你的收藏业务逻辑,比如存入本地数据库、同步到云端等
        Console.WriteLine($"收藏成功:{targetContent}");

        // 可选:修改按钮状态提示用户已操作
        currentBtn.Text = "已收藏";
        currentBtn.IsEnabled = false;
    }
}

如果你用的是MVVM架构,也可以把按钮的Command属性绑定到ViewModel里定义好的收藏命令,参数同样用CommandParameter传递即可。如果需要操作当前动态生成的Frame/Label等控件,也可以把对应的控件实例或者你需要的其他数据放到CommandParameter里传递。

内容的提问来源于stack exchange,提问作者rems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 04:24:02