stevenjin 2022-11-15 08:32 采纳率: 95.5%
浏览 5
已结题

wpf用通知属性更新动态创建的按钮显示文本

1.自定义通知类

  1. public class NotifyBase : INotifyPropertyChanged
  2. {
  3. public event PropertyChangedEventHandler PropertyChanged;
  4. public void NotifyChanged([CallerMemberName] string propName = "")
  5. {
  6. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
  7. }
  8. }

2 .创建动态按钮

  1. Random random = new Random();
  2. for (int i = 0; i < 3; i++)
  3. {
  4. lstBtn.Add(new DataGridItemModel2 { Name = "btn测试-" + i.ToString("00"), Age = random.Next(18, 90), Value = random.Next(30, 120).ToString() });
  5. }
  6. foreach (var actor in lstBtn)
  7. {
  8. CreateDynamicButton(actor.Name, actor.Age);
  9. }
  10. public void CreateDynamicButton(string btnText, int actIndepth)
  11. {
  12. Button btn = new Button();
  13. btn.Content = btnText;
  14. btn.Margin = new Thickness(3, 0, 0, 0);
  15. btn.Padding = new Thickness(3, 0, 0, 0);
  16. //btn.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
  17. //btn.BackColor = Color.FromKnownColor(KnownColor.Control);
  18. btn.Cursor = Cursors.Hand;
  19. btn.Height = 70;
  20. btn.Width = 300;
  21. btn.Tag = actIndepth;
  22. grid.Children.Add(btn);
  23. }
  24. public class DataGridItemModel2:NotifyBase
  25. {
  26. private string _name;
  27. public string Name
  28. {
  29. get { return _name; }
  30. set { _name = value; this.NotifyChanged(); }
  31. }
  32. private int _age;
  33. public int Age
  34. {
  35. get { return _age; }
  36. set { _age = value; this.NotifyChanged(); }
  37. }
  38. public string Value
  39. {
  40. get;
  41. set;
  42. }
  43. }
  44. }

3.试图更改动态创建的按钮显示文本,界面不能更
MainWindow.lstBtn[0].Name = "test";

展开全部

  • 写回答

2条回答 默认 最新

  • weixin_51128233 2022-11-15 09:14
    关注

    用异步线程尝试定位按钮name给name.content赋值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    stevenjin 2022-11-15 09:37

    那这样不是绑定了

    回复
    weixin_51128233 回复 stevenjin 2022-11-16 00:53

    1. GridViewColumn gridViewColumn = new GridViewColumn() { Header = viewColumns[i].Name, Width = viewColumns[i].Width, DisplayMemberBinding = new System.Windows.Data.Binding($"Data[{i}]") };
    2. DisplayView.Columns.Add(gridViewColumn);

    上面是我创建动态显示表头并绑定属性的方法,可参考

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月19日
  • 修改了问题 11月15日
  • 修改了问题 11月15日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部