我正在使用WPF开发一个应用程序,并且由于某些原因Visual Studio在错误窗口中显示此异常:Object reference not set to an instance of an object
当我构建应用程序时,此错误仍然可见,但我的应用程序工作正常
这是我的XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Margin="5"
HorizontalAlignment="Stretch" VerticalAlignment="Top" Orientation="Vertical">
<CheckBox Name="cbPersonType" Content="Person Type" IsChecked="{Binding Path=IsPersonTypeVisible, Mode=TwoWay}" />
</StackPanel>
<StackPanel Grid.Row="0" Grid.Column="1" Margin="5"
HorizontalAlignment="Stretch" VerticalAlignment="Top" Orientation="Vertical">
<DataGrid Name="dgPersons">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Person Type"
Visibility="{Binding Path=IsChecked, Source={x:Reference Name=cbPersonType}, Converter={StaticResource BooleanToVisibilityConverter}}"
/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>
此异常位于DataGridTextColumn上。 有人知道为什么以及这个错误是什么?
答案 0 :(得分:2)
这只是我试图解释错误消息的理论。
现在我正在努力解决类似案件。但是,我在上下文菜单中有我的复选框,显示数据网格中的列。用户可以检查他/她想要在数据网格中看到的列。
问题是,在用户实际右键单击以打开上下文菜单之前,似乎不会初始化复选框。在此之前,datagrid只显示没有列的空行。
在上下文菜单中加载复选框之前,似乎x:Reference没有启动。
contextmenu和datagrid的简化XAML如下所示。
<DataGrid ItemsSource="{Binding OrderCollection}" AutoGenerateColumns="False" IsReadOnly="True" >
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Columnsetup">
<CheckBox x:Name="chkHeadOrderNo" Content="Ordernumber" IsChecked="{Binding columnVisibilityHeadOrderNo}"/>
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding OrderNo}" Header="Ordernumber"
Visibility="{Binding Source={x:Reference chkHeadOrderNo}, Path=IsChecked, Converter={StaticResource convertVisibility}}"/>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:-1)
我建议更换
Source={x:Reference Name=cbPersonType}
ElementName=cbPersonType
public byte[] extractBytes (String ImageName) throws IOException {
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
return ( data.getData() );
}
。这在设计和运行时模式下都可以正常工作