我想有时将一个,有时两个不同的TextBlock添加到一个网格字段中。如果它只有一个,它的工作正常;但是,如果我加两个,那么它们不是一个写在另一个之下,而是相互写入,所以我不能再读它们了。
是否有可能在第一个TextBlock之后添加换行符或者做其他事情来避免这种行为?
我添加TextBlocks的代码是:
for (int k = 0; k < verschiedeneFaecher.Count(); k++){
[...]
var fachLehrer = new TextBlock { Text = fachString, TextAlignment = TextAlignment.Left };
[...]
Grid.SetColumn(fachLehrer, j + 1);
Grid.SetRow(fachLehrer, i + 2);
Stundenplan.Children.Add(fachLehrer);
}
如果只有一个TextBlock,verschiedeneFaecher.Count()
为1,如果应该有两个,则为2.
答案 0 :(得分:1)
尝试添加StackPanel以处理需求的多行性质,然后将文本块添加到StackPanel。
XAML
<Grid Name="Stundenplan">
<StackPanel Name="AddChildrenHere" />
<!-- XAML for other controls -->
</grid>
则...
for (int k = 0; k < verschiedeneFaecher.Count(); k++){
[...]
var fachLehrer = new TextBlock { Text = fachString, TextAlignment = TextAlignment.Left };
[...]
AddChildrenHere.Children.Add(fachLehrer);
}
此解决方案中并不真正需要外部网格,但为了清晰起见,我将其留在了外面。此外,您的原始代码提到了变量i
,但没有实例化它,所以我忽略了它。不过,你应该有足够的人去这里工作准确的位置。 :)
答案 1 :(得分:0)
您需要设置Grid.RowDefinitions
网格的Stundenplan
集合,以确保在网格中定义正确的行数,否则所有项目都将显示在彼此之上。
请参阅MSDN docs here。