防止TextBlocks呈现在彼此之上

时间:2012-01-19 15:29:18

标签: silverlight windows-phone-7

我想有时将一个,有时两个不同的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.

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