2013-08-01 2 views
0

WPF의 중첩 된 격자/스택 패널/격자 창에서 작업하고 있습니다. 그것의 Calander, maingrid 세포가 하루되고. 이 날에는 텍스트 상자와 스택 패널이 있습니다. 스택 패널에 그리드가 있습니다. EVery는 현재 달/년으로 레이아웃이 변경되기 때문에 런타임에 빌드하면 C#으로 완료됩니다. stackpanel에 테두리를 추가하고 싶을 때를 제외하고는 큰 문제는 없습니다. 타입 'System.Windows.Markup.XamlParseException'처리되지 않은 예외 PresentationFramework.dll 에 추가 정보를 발생WPF에 테두리가있는 격자 패널을 추가하면 오류가 발생합니다.

: 이것은 다음 오차 범 '유형의 생성자의 호출을'ADBF.ToezAcad.Admin.OpleidingKalender 지정된 바인딩 제약 조건과 일치하는 .MainWindow '가 예외를 던졌습니다.' 행 번호 '3'및 행 위치 '9'.

특별한이 항목이 없습니다.

재미있는 점은 포함 된 격자에 스택 패널 (경계선 포함)을 추가하는 순간에만이 오류가 발생한다는 것입니다. 코드의

짧은 버전 : 어떤 도움은 매우 극명하게 될 것이다

Border stackpanelborder = new Border(); 
this.Content = stackpanelborder; 
StackPanel stackpanel = new StackPanel(); 
stackpanelborder.Child = stackpanel; 
Grid.SetColumn(stackpanel, m);       
Grid.SetRow(stackpanel, d + 1); 
mainGrid.Children.Add(stackpanel); // if I uncomment this line, it throws the error. 

,

아놀드

답변

1

당신이 StackPanel 두 개의 서로 다른 하위 컬렉션을 추가 @ADBF. 각 UIElement는 시각적 트리에서 하나의 부모 만 가져야하지만 UIElement는 유형에 따라 많은 자식을 가질 수 있습니다.

나는 을 mainGrid의 자녀에게 대신 추가하고 싶다고 생각합니다.

편집 :

은 또한 당신이 SetColumn에 stackpanelborder를 참조해야한다/SetRow 방법하지 stackpanel.

stackpanel이 (가) stackpanelborder의 하위 항목 인 이유는 해당 UIElement 내부에서 렌더링되기 때문입니다. 그러나 나중에 열/행을 추가하려는 경우 stackpanelborder에 그리드에 삽입 할 위치를 지정해야합니다.

기본적으로 하나는 다음과 같이해야했다 경우 XAML 문서 :

<Grid Name="mainGrid"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition .../> 
     <ColumnDefinition .../> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition .../> 
     <RowDefinition .../> 
    </Grid.RowDefinitions> 
    <Border Name="stackpanelborder" Grid.Row="0" Grid.Column="0" ...> 
     <StackPanel Name="stackpanel" .../> 
    </Border> 
</Grid> 
+0

감사 벨소리를! 이제 작동합니다. 설명 주셔서 감사합니다. 감사합니다. – ADBF

+0

@ADBF 기꺼이 도와주었습니다. –

관련 문제