0

在我的 WPF 应用程序中,每个应用程序都TabItem加载不同UserControl的 .In MainWindow 的设计视图,同时将 a 加载UserControl到 aTabItem中,An unhandeled exception has occured如下图所示。 在此处输入图像描述 XAML:

<TabItem Header="Catalog" Name="catalog" MinWidth="150" Width="auto" >
   <my:CatelogControl x:Name="catelogControl" Margin="1,0" Width="800"/>
</TabItem>

当我调试项目时,它显示NullReferecneException was unhandeled如下图所示。 在此处输入图像描述 分类用户控件:

<UserControl x:Class="LibraryAutomation.UserControls.CatalogControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:app="clr-namespace:LibraryAutomation"
         Name="catalogControl"
         mc:Ignorable="d" Loaded="catalogControl_Loaded"
         d:DesignHeight="480" d:DesignWidth="846">
<UserControl.Resources>
    <app:CopyLeftConverter x:Key="copyLeftConverter" />
    <DataTemplate x:Key="CourseTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=CourseID}"/>
            <TextBlock Text=" : "/>
            <TextBlock Text="{Binding Path=CourseName}"/>
        </StackPanel>
    </DataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Height="481">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="0.4*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition MinHeight="400" Height="476"></RowDefinition>
        <RowDefinition Height="4*" />
    </Grid.RowDefinitions>
    <StackPanel Height="460" Margin="0,0,241,0" Grid.ColumnSpan="2">
        <ComboBox Name="courseList" VerticalAlignment="Top" SelectionChanged="courseList_SelectionChanged" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding}" ItemTemplate="{StaticResource CourseTemplate}"/>
        <ListView MinHeight="400" Height="400" Name="bookList" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding}" KeyDown="bookList_KeyDown" KeyUp="bookList_KeyDown" MouseEnter="bookList_MouseEnter" MouseDoubleClick="bookList_MouseDoubleClick" MouseDown="bookList_MouseDoubleClick" MouseUp="bookList_MouseDoubleClick">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Width="auto" Header="Book ID" DisplayMemberBinding="{Binding Path=BookID}"/>
                        <GridViewColumn Width="auto" Header="Book Name" DisplayMemberBinding="{Binding Path=BookName}"/>
                        <GridViewColumn Width="auto" Header="Author" DisplayMemberBinding="{Binding Path=Author}"/>
                        <GridViewColumn Width="auto" Header="Publisher" DisplayMemberBinding="{Binding Path=Publisher}"/>
                        <GridViewColumn Width="auto" Header="Remaining Qunatity" DisplayMemberBinding="{Binding Path=QuantityLeft, Converter={StaticResource copyLeftConverter}}"/>
                        <GridViewColumn Width="auto" Header="Total Quantity" DisplayMemberBinding="{Binding Path=TotalQuantity, Converter={StaticResource copyLeftConverter}}"/>
                        </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
        <DockPanel>
            <Button Width="150" Height="30" Margin="5" Content="New Book" Name="newBook" Click="newBook_Click" HorizontalAlignment="Center"/>
            <Button Width="150" Height="30" Margin="5" Content="Save Changes" Name="saveChanges" Click="saveChanges_Click" IsEnabled="False" HorizontalAlignment="Right"/>
        </DockPanel>
    </StackPanel>
    <StackPanel Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left">
        <Image Height="150" Width="120" Source="/LibraryAutomation;component/Images/Books.jpg"/>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">ID:</Label>
            <TextBlock Width="123" Padding="10,5" Name="previewBookId"/>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">Title :</Label>
            <TextBlock Padding="10,5" Name="previewBookName" HorizontalAlignment="Left" Width="103" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
             <Label Height="26" Width="auto" HorizontalAlignment="Left">Author :</Label>
             <TextBlock Padding="10,5" Name="previewAuthor" HorizontalAlignment="Left" Width="100" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">Publisher :</Label>
            <TextBlock Padding="10,5" Name="previewPublisher" HorizontalAlignment="Left" Width="88" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">ISBN :</Label>
            <TextBlock Padding="10,5" Name="previewIsbn" HorizontalAlignment="Left" Width="107" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">Quantity :</Label>
            <TextBlock Padding="10,5" Name="previewTotalCopy" HorizontalAlignment="Left" Width="90" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">Remaining:</Label>
            <TextBlock Padding="10,5" Name="previewCopyLeft" HorizontalAlignment="Left" Width="84" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Height="26" Width="auto" HorizontalAlignment="Left">Location :</Label>
            <TextBlock Padding="10,5" Name="previewLocation" HorizontalAlignment="Left" Width="92" />
        </StackPanel>
        <Separator/>
        <Button Width="150" Height="30" Name="hireThisBook" Click="hireThisBook_Click"> Hire</Button>
        <Separator/>
        <Button Margin="10" Width="100" Height="20" Name="editThisBook" Click="editThisBook_Click"> Edit</Button>
        <Button Margin="10" Width="100" Height="20" Name="deleteThisBook" Click="deleteThisBook_Click">Delete</Button>
    </StackPanel>
</Grid>

编辑:详细的例外情况,

System.NullReferenceException
Object reference not set to an instance of an object.
at System.Data.Linq.SqlClient.QueryConverter.VisitInvocation(InvocationExpression invoke)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitExpression(Expression exp)
at System.Data.Linq.SqlClient.QueryConverter.VisitJoin(Expression outerSequence,     Expression innerSequence, LambdaExpression outerKeySelector, LambdaExpression  innerKeySelector, LambdaExpression resultSelector)
   at     System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
 at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitWhere(Expression sequence,     LambdaExpression predicate)
at  System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.VisitSelect(Expression sequence, LambdaExpression selector)
at System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc)
at System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
at System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(Expression node)
at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at System.Data.Linq.Provider.BindingList.Create[T](DataContext context, IEnumerable`1 sequence)
at System.Data.Linq.DataQuery`1.GetNewBindingList()
at System.Data.Linq.DataQuery`1.System.ComponentModel.IListSource.GetList()
at MS.Internal.Data.ViewManager.GetViewRecord(Object collection, CollectionViewSource cvs, Type collectionViewType, Boolean createView)
at MS.Internal.Data.DataBindEngine.GetViewRecord(Object collection, CollectionViewSource key, Type collectionViewType, Boolean createView)
at System.Windows.Data.CollectionViewSource.GetDefaultCollectionView(Object source, Boolean createView)
at System.Windows.Data.CollectionViewSource.GetDefaultCollectionView(Object source, DependencyObject d)
at System.Windows.Controls.ItemCollection.SetItemsSource(IEnumerable value)
at System.Windows.Controls.ItemsControl.OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp)
at System.Windows.Data.BindingExpressionBase.Invalidate(Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.TransferValue(Object newValue, Boolean isASubPropertyChange)
at System.Windows.Data.BindingExpression.Activate(Object item)
at System.Windows.Data.BindingExpression.AttachToContext(AttachAttempt attempt)
at System.Windows.Data.BindingExpression.MS.Internal.Data.IDataBindEngineClient.AttachToContext(Boolean lastChance)
at MS.Internal.Data.DataBindEngine.Task.Run(Boolean lastChance)
at MS.Internal.Data.DataBindEngine.Run(Object arg)
at MS.Internal.Data.DataBindEngine.OnLayoutUpdated(Object sender, EventArgs e)
at System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

在查看详细信息中,InnerException 说“null”我找不到什么问题。有什么建议吗?谢谢你。

4

0 回答 0