我想在循環的每次迭代結束時使用C#向我的MainWindow添加一個TextBlock。如何使用C#來防止文本塊重疊?
但是,每次迭代它們都會被添加到前一個之上。 TextBlocks的哪些屬性,如果有的話,允許我保持它們不重疊?
以下是裏面一個for循環:
TextBlock result = new TextBlock();
result.Text = [string];
result.Width = 200;
result.Height = 100;
result.Margin = new Thickness(20, 20, 20, 20);
result.Name = "email" + [string];
Analysis_Space.Children.Add(result);
Analysis_Space指的是我的主窗口的主電網。
不要使用'Margin'到位置控制,使用適當的*佈局*。將控件放入合適的[容器](http://www.wpf-tutorial.com/panels/introduction-to-wpf-panels/)。例如。你現在已經有了'Grid',[setup](http://www.wpf-tutorial.com/panels/grid/)它的列和行,並把孩子放在那裏。 – Sinatr
如果您使用Margin進行正確對齊,請使用帶有Veritcal Orientation的StackPanel –
除了使用適當的Panel(而不是Grid)之外,您不應在後面的代碼中創建或操作UI元素。更好地使用ItemsControl並將其ItemsSource屬性綁定到'ObservableCollection'。有關所有詳細信息,請參閱[數據模板概述](https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/data/data-templating-overview)文章。還要注意,面板可以嵌套。無需將元素添加到頂層面板。 –
Clemens