【发布时间】:2019-03-01 17:42:34
【问题描述】:
我的旧 Winform 示例:
我有一个空白网格,我需要在 foreach 中添加一些动态生成的标签
我正在使用它来创建标签并将名称设置为我以后需要使用的 id。
this.LayoutRoot.Children.Add(new Label { Foreground = Brushes.White, HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center, Background = Brushes.LightBlue, Content = Node.name, Height = 20, Width = 320, Name = "_" + Node.id});
我试过了
Grid.SetRow
然后是新标签,但它需要一个 UI 元素传递给它,并且标签尚未创建...
所以目前的代码只是在网格中心将所有标签叠加在一起。
也试过
Grid.SetRow("_" + Node.id, i);
但不支持名称字符串格式,也许还有另一种方法来创建和定位标签
谢谢
【问题讨论】:
-
您没有提供您的实现范围,所以这只是一个猜测:也许
MVVM模式将是您要求的完美解决方案。你可以先学习模式的原理,也可以看看实际的例子,从 e 开始。 G。在这里:wpf-tutorial.com/list-controls/itemscontrol 了解此解决方案是否符合您的需求。 -
那就不要使用网格了!使用 StackPanel!
-
你走错路了。 WPF 不打算这样使用。 WPF 不是 WinForms。不要在代码中构建你的 UI。相反,请使用强大的样式和模板机制以及数据绑定。
-
@dymanoid 您可以使用从 api 调用返回的数据而不是通过代码在计时器(30 秒)上删除/添加控件吗?谢谢
-
@DwayneDibbley,是的,你可以。有关详细信息,请参阅 MVVM。