2012-02-15 6 views
0

이 표시 :인스턴스화 된 객체가 보이지 않는 이유는 무엇입니까? 마지막 줄에

// Dynamically add Grid with 8 columns to the StackPanel 
Grid grd = new Grid(); 
ColumnDefinition c0 = new ColumnDefinition(); 
c0.Width = new GridLength(1, GridUnitType.Star); 
. . . 
grd.ColumnDefinitions.Add(c0); 
. . . 
// Add it to the StackPanel 
spNufan.Children.Add(grd); // <- ka-pow! 

... 난 얻을 "System.NullReferenceException가 개체의 인스턴스로 설정되지 않았습니다 처리되지 않은 메시지 = 개체 참조했다."

그러나 "GRD "라인에서 생성된다

Grid grd = new Grid(); 

... 및 spNufan (StackPanel에)는 해당 XAML에서이다

<StackPanel Name="spNufan" 
      Orientation="Vertical"> 
</StackPanel> 

왜 오류입니까?

+1

해당 줄에 중단 점을 넣으십시오. 차례대로 각 개체 (속성 포함) 위에 마우스를 올려 놓습니다. 어느 것이 null인가? 그것을 고정시키는 방법을보십시오. –

+1

Debug.Assert (spNufan! = null);를 추가하면 어떻게됩니까? Debug.Assert (spNufan.Children); 그 후, 예외를 던지기 전에 둘 다? – dgvid

+0

어디에서 (언제)이 코드를 모두 호출합니까? GUI가 아직 생성되지 않은 것 같습니다. –

답변

1

내가 코드를 완벽하게 정상적으로이라고 말을하지만, 내 의견으로는, 당신이 그것을 실행 내용이로드되고 초기화 실제로 XAML 전에, 그래서이 원인 당신의

spnuFan is Null 

을 가정 코드가 제공된 그대로 완벽하게 유효합니다. 따라서 앱의 다른 위치에서 움직이는 것을 고려하십시오.

버튼을 추가하여이를 확인하고 해당 스택 채우기 코드를 Click 이벤트에 실행하는 것이 좋습니다.

희망이 도움이됩니다.

4

grd 아니요.

또는 spNufan.Children 중 하나입니다. 당신이 당신의 XAML에 이름을 정의 할 때, 당신은 Name보다는 x:Name를 사용한다 :

<StackPanel x:Name="spNufan" Orientation="Vertical"></StackPanel> 
3

그 널 참조 예외가 그리드 내부에 발생합니다 보인다. 그리드에서는 행 정의가 인스턴스화되어야한다고 생각합니다. (코드 건너 뜀 부분에서 RowDefinitions를 인스턴스화하는 경우 캡틴이 명백한 이유는 무엇입니까?) 이것이 이유가 아니라면 스택 추적을 확인하십시오.

관련 문제