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
相关产品推荐
相关产品推荐

