为什么实例化的对象被视为不是

本文关键字:实例化 对象 为什么 | 更新日期: 2023-09-27 18:24:58

在显示的最后一行:

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

为什么会出现错误?

为什么实例化的对象被视为不是

grd不为空。

spNufanspNufan.Children是。当您在XAML中定义名称时,应该使用x:Name而不是Name:

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

似乎在网格内部抛出了null引用异常。我想网格也需要实例化行定义。(如果您在代码的跳过部分实例化RowDefinitions,请原谅我是显而易见的队长)如果不是这个原因,请尝试检查堆栈跟踪。

我想说您的代码非常好,但在我看来,您在实际加载和初始化XAML内容之前执行了,所以我假设您的

spnuFan is Null

因为提供的代码对我来说是完全有效的。所以考虑一下它在你的应用程序的不同地方移动。

我建议通过添加一个按钮来检查这一点,并在Click事件上执行堆栈填充代码。

希望这能有所帮助。