如何使用C#防止文本块重叠?

如何使用C#防止文本块重叠?,c#,wpf,textblock,C#,Wpf,Textblock,我正在尝试使用C#在循环的每次迭代结束时向我的主窗口添加一个文本块 但是,每次迭代都会在前一次迭代的基础上添加一次迭代。TextBlock的什么属性(如果有的话)允许我防止它们重叠 以下内容位于for循环中: TextBlock result = new TextBlock(); result.Text = [string]; result.Width = 200; result.Height = 100; result.Margin = new Thickness(20, 20, 20,

我正在尝试使用C#在循环的每次迭代结束时向我的主窗口添加一个文本块

但是,每次迭代都会在前一次迭代的基础上添加一次迭代。TextBlock的什么属性(如果有的话)允许我防止它们重叠

以下内容位于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);

分析空间指的是我的主窗口的主网格。

正确使用面板控件将帮助您解决此问题。使用哪个面板取决于您的GUI需求。参考链接

例如,将新的
堆栈面板
放在
分析空间
上。然后,将文本区域添加到
StackPanel

您的新代码如下所示:

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];
stackPanel.Children.Add(result);

在上面的代码中,
stackPanel
表示放置在主网格面板上的
stackPanel
的实例。

正确使用面板控件将帮助您解决此问题。使用哪个面板取决于您的GUI需求。参考链接

例如,将新的
堆栈面板
放在
分析空间
上。然后,将文本区域添加到
StackPanel

您的新代码如下所示:

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];
stackPanel.Children.Add(result);

在上面的代码中,
stackPanel
表示放置在主网格面板上的
stackPanel
的实例。

如果您使用网格,但您没有告诉程序应该将文本块放置在哪个行/列中,它会将它们放置在默认的0,0位置(即grid.row=0和grid.column=0)

您必须这样做:

Grid.SetRow(result, 1);

在第1行中设置结果。如果您正在使用网格,则可以对列执行相同的操作,但您没有告诉程序应将文本块放置在哪个行/列中,它会将它们放置在默认的0,0位置(即grid.row=0和grid.column=0)

您必须这样做:

Grid.SetRow(result, 1);

在第1行中设置结果。您可以对列执行相同的操作

不要使用
边距
来定位控件,请使用适当的布局。将控制装置置于合适的位置。例如,您现在有了
网格
,它的列和行,并将子元素放在那里。使用具有真实方向的StackPanel如果您使用边距使用适当的面板(而不是网格)对齐适当的边,则不应在代码隐藏中创建或操作UI元素。最好使用ItemsControl并将其ItemsSource属性绑定到
ObservableCollection
。有关所有详细信息,请参阅本文。还请注意,面板可以嵌套。无需向顶层面板添加元素。所有内容都非常有用,谢谢@克莱门斯,你的建议与我现在学习的内容特别相关,因此感谢你的帮助。不要使用
Margin
来定位控件,使用正确的布局。将控制装置置于合适的位置。例如,您现在有了
网格
,它的列和行,并将子元素放在那里。使用具有真实方向的StackPanel如果您使用边距使用适当的面板(而不是网格)对齐适当的边,则不应在代码隐藏中创建或操作UI元素。最好使用ItemsControl并将其ItemsSource属性绑定到
ObservableCollection
。有关所有详细信息,请参阅本文。还请注意,面板可以嵌套。无需向顶层面板添加元素。所有内容都非常有用,谢谢@克莱门斯,你的建议和我现在学到的东西特别相关,所以谢谢你的帮助。