Почему экземпляр объекта рассматривается как не? - PullRequest
0 голосов
/ 16 февраля 2012

В последней показанной строке:

// 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>

Почему ошибка?

Ответы [ 3 ]

4 голосов
/ 16 февраля 2012

grd не равно нулю.

Либо spNufan, либо spNufan.Children. Когда вы определяете имя в своем XAML, вы должны использовать x:Name вместо Name:

<StackPanel x:Name="spNufan" Orientation="Vertical"></StackPanel>
3 голосов
/ 16 февраля 2012

Кажется, что исключение нулевой ссылки генерируется внутри сетки. Я предполагаю, что сетка также требует определения строк. (извините за очевидность капитана, если вы создаете экземпляр RowDefinitions в пропущенной части кода) Если это не причина, попробуйте проверить трассировку стека.

1 голос
/ 16 февраля 2012

Я бы сказал, что ваш код в порядке, но, по моему мнению, вы выполняете его до фактического XAML содержимого загружается и инициализируется, поэтому я предполагаю, что

spnuFan is Null

Потому что код, предоставленный как есть, мне кажется вполне верным. Так что рассмотрите это перемещение в другом месте вашего приложения.

Я бы предложил проверить это, добавив кнопку и выполнив этот код заполнения стека для события Click.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...