为什么实例化的对象被视为不是
本文关键字:实例化 对象 为什么 | 更新日期: 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
不为空。
spNufan
或spNufan.Children
是。当您在XAML中定义名称时,应该使用x:Name
而不是Name
:
<StackPanel x:Name="spNufan" Orientation="Vertical"></StackPanel>
似乎在网格内部抛出了null引用异常。我想网格也需要实例化行定义。(如果您在代码的跳过部分实例化RowDefinitions,请原谅我是显而易见的队长)如果不是这个原因,请尝试检查堆栈跟踪。
我想说您的代码非常好,但在我看来,您在实际加载和初始化XAML
内容之前执行了,所以我假设您的
spnuFan is Null
因为提供的代码对我来说是完全有效的。所以考虑一下它在你的应用程序的不同地方移动。
我建议通过添加一个按钮来检查这一点,并在Click
事件上执行堆栈填充代码。
希望这能有所帮助。