2012-01-19 4 views
0

때로는 하나의 그리드 필드에 두 개의 다른 TextBlock을 추가하려고합니다. 그것은 단지 하나 일 경우 잘 작동합니다. 그러나 두 개를 더하면 더 아래에 쓰여지는 것이 아니라 서로 쓰여져 더 이상 읽을 수 없게됩니다.TextBlocks이 서로 위에 렌더링되지 않도록하십시오.

첫 번째 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

답변

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을 언급했지만 인스턴스화하지 않았으므로 무시했습니다. 당신은 여기서 정확한 위치를 찾아 내기에 충분할 것입니다. :)

0

당신은 설정해야합니다 Grid.RowDefinitions 모음을 Stundenplan 그리드에 넣으십시오. 그리드에서 정확한 행 수를 정의해야합니다. 그렇지 않으면 모든 항목이 서로 위에 표시됩니다.

MSDN docs here을 참조하십시오.

관련 문제