2012-02-15 74 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

在該行上放置一個斷點。依次將鼠標懸停在每個對象(包括屬性)上。哪一個是空的?查看有關解決這個問題 – 2012-02-15 21:56:34

+1

如果添加Debug.Assert(spNufan!= null),會發生什麼情況;然後Debug.Assert(spNufan.Children);在那之後,這兩條線在拋出異常之前呢? – dgvid 2012-02-15 21:58:43

+0

你在哪裏(何時)調用所有這些代碼?看起來GUI尚未創建。 – 2012-02-15 22:01:46

回答

1

我要說的是,你的代碼是完全正常的,但在我看來,你執行它的內容被加載並初始化以前實際上XAML,所以我

spnuFan is Null 

導致現在提供的代碼似乎對我完全有效。因此,請考慮在應用程序的不同位置移動。

我建議通過添加一個按鈕並在Click事件上執行堆棧人口代碼來檢查此事件。

希望這會有所幫助。

4

grd不爲空。

spNufanspNufan.Children是。當您在XAML定義名稱,你應該使用x:Name而不是Name

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

似乎空引用異​​常的網格內拋出。 我想網格需要行定義來實例化。 (如果你在跳過的部分代碼中實例化RowDefinitions,請原諒我是隊長) 如果這不是原因,請嘗試檢查堆棧跟蹤。

相關問題