4

たとえば、コンボボックス、SelectionChangedにイベントハンドラーを追加すると、例外が発生します。誰でも理由を教えてください。

私のラップトップにVS2010を搭載したwin7をインストールすると、正常に動作するため、奇妙な動作です。

例外:

A first chance exception of type 'System.NullReferenceException' occurred in    wpfapplication.exe
Additional information: Object reference not set to an instance of an object.

例外コールスタック:

PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlReader templateReader, System.Xaml.XamlObjectWriter currentWriter) + 0x247 バイト
PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlObjectWriter objectWriter) + 0x66 バイト PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(System.Windows.DependencyObject コンテナー、System.Windows.Markup.IComponentConnector componentConnector、 System.Windows.Markup.IStyleConnector styleConnector、System.Collections.Generic.List affectedChildren、System.Windows.UncommonField templatedNonFeChildrenField) + 0x26a バイト PresentationFramework.dll!System.Windows.FrameworkTemplate.LoadContent(System.Windows.DependencyObject コンテナー、System.Collections .Generic.List modifiedChildren) + 0x76 バイト
PresentationFramework.dll!System.Windows.StyleHelper.ApplyTemplateContent(System.Windows.UncommonField dataField, System.Windows.DependencyObject コンテナー, System.Windows.FrameworkElementFactory templateRoot, int lastChildIndex, System.Collections.Specialized.HybridDictionary childIndexFromChildID, System.Windows.FrameworkTemplate FrameworkTemplate) + 0xc4 バイト
PresentationFramework.dll!System.Windows.FrameworkTemplate.ApplyTemplateContent(System.Windows.UncommonField templateDataField, System.Windows.FrameworkElement コンテナー) + 0x3b バイト
PresentationFramework.dll!System.Windows.FrameworkElement.ApplyTemplate() + 0x7b バイト
PresentationFramework.dll!System.Windows.FrameworkElement.MeasureCore(System.Windows.Size availableSize) + 0x40 バイト
PresentationCore.dll!System.Windows.UIElement.Measure(System.Windows.Size availableSize) + 0x207 バイト

Xaml:

<DataGrid Margin="80,0,0,0"  GridLinesVisibility="None"  
                                              RowDetailsVisibilityMode="Collapsed" 
                                              ColumnHeaderStyle="{StaticResource ColumnHeaderStyle}"  
                                              RowStyle="{StaticResource DataGridRowStyleAlternation}" 
                                              AutoGenerateColumns="False" SelectionMode="Single" 
                                              AlternationCount="2" Background="Transparent" HeadersVisibility="Column" 
                                              x:Name="detailsDatagrid" 
                                              Initialized="scenesDetailsDataGrid_Initialized"
                                              ItemsSource="{Binding Source={StaticResource scenesRequisitesViewSource}}" 
                                              ColumnDisplayIndexChanged="detailsDatagrid_ColumnDisplayIndexChanged" >
                                        <DataGrid.Columns>
                                            <DataGridTemplateColumn Header="Fahrzeug" Width="SizeToCells">

                                                <DataGridTemplateColumn.CellTemplate>
                                                    <DataTemplate>
                                                        <ComboBox DisplayMemberPath="Name"
                                                                   ItemsSource="{Binding Path=ProjectsRequisites, Source={StaticResource projectsViewSource}, UpdateSourceTrigger=PropertyChanged}" 
                                                                   SelectedValue="{Binding Path=RequisiteId,Mode=TwoWay}"
                                                                   SelectedValuePath="ID"     
                                                                  SelectionChanged="ComboboxRequisite_SelectionChanged"
                                                                   Tag="{Binding}" />

                                                    </DataTemplate>
                                                </DataGridTemplateColumn.CellTemplate>
                                            </DataGridTemplateColumn>
                                            <DataGridTextColumn IsReadOnly="True"  Binding="{Binding Path=Costs,StringFormat={}{0:C}, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}" Header="Kosten" Width="SizeToCells" />
                                            <DataGridTextColumn Binding="{Binding Path=Count}" Header="Anzahl" Width="SizeToHeader" />
                                        </DataGrid.Columns>
                                    </DataGrid>
4

3 に答える 3

1

バックグラウンド コードに依存していた xaml 内のものを取り除いたところ、これを再現できませんでした。これは、エラーの性質と同様に、xaml がバインドされているオブジェクトの 1 つに何か問題があることを示唆しています。それらはすべて初期化されていますか?

ColumnDisplayIndexChanged="detailsDatagrid_ColumnDisplayIndexChanged" >
ItemsSource="{Binding Source={StaticResource scenesRequisitesViewSource}}" 
ColumnHeaderStyle="{StaticResource ColumnHeaderStyle}"  
RowStyle="{StaticResource DataGridRowStyleAlternation}"
Initialized="scenesDetailsDataGrid_Initialized"
Source={StaticResource projectsViewSource},
Binding="{Binding Path=Costs,StringFormat={}{0:C}, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}"

これは実行するために取り出したものです。これのほとんどは、コードが不足しているからです。これらの 1 つに問題があるはずです。

ハンドラーのコンテンツが間違っている可能性が高いです。何が含まれていますか?

于 2012-11-19T14:29:43.373 に答える
0

ComboBox の Tag プロパティに何らかの問題があると思います -> "Tag="{Binding}""。それを削除してみてください。問題は解消されます。

他のコントロールでこの奇妙な動作がありました:Grid、TextBlock。Visual Studio 2010 がインストールされているすべてのコンピューターですべてが機能しましたが、他のコンピューターでは機能しませんでした。タグのプロパティを削除すると、プログラムが他のマシンで動作し始めます。

私のイベントビューアエラーは次のとおりです。

  Application: PragmaGRP.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.NullReferenceException
    Stack:
       at System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlReader, System.Xaml.XamlObjectWriter)
       at System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlObjectWriter)
       at System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(System.Windows.DependencyObject, System.Windows.Markup.IComponentConnector, System.Windows.Markup.IStyleConnector, System.Collections.Generic.List`1<System.Windows.DependencyObject>, System.Windows.UncommonField`1<System.Collections.Hashtable>)
       at System.Windows.FrameworkTemplate.LoadContent(System.Windows.DependencyObject, System.Collections.Generic.List`1<System.Windows.DependencyObject>)
       at System.Windows.StyleHelper.ApplyTemplateContent(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, System.Windows.DependencyObject, System.Windows.FrameworkElementFactory, Int32, System.Collections.Specialized.HybridDictionary, System.Windows.FrameworkTemplate)
       at System.Windows.FrameworkTemplate.ApplyTemplateContent(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, System.Windows.FrameworkElement)
       at System.Windows.FrameworkElement.ApplyTemplate()
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Grid.MeasureCell(Int32, Boolean)
       at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean)
       at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Grid.MeasureCell(Int32, Boolean)
       at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean)
       at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
       at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
       at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
       at System.Windows.UIElement.Measure(System.Windows.Size)
       at System.Windows.ContextLayoutManager.UpdateLayout()
       at System.Windows.ContextLayoutManager.UpdateLayoutCallback(System.Object)
       at System.Windows.Media.MediaContext+InvokeOnRenderCallback.DoWork()
       at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
       at System.Windows.Media.MediaContext.RenderMessageHandlerCore(System.Object)
       at System.Windows.Media.MediaContext.RenderMessageHandler(System.Object)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
       at System.Windows.Threading.DispatcherOperation.InvokeImpl()
       at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
       at System.Threading.ExecutionContext.runTryCode(System.Object)
       at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
       at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
       at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
       at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.ProcessQueue()
       at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
       at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
       at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
       at System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
       at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
       at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
       at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
       at System.Windows.Application.RunDispatcher(System.Object)
       at System.Windows.Application.RunInternal(System.Windows.Window)
       at System.Windows.Application.Run(System.Windows.Window)
       at PragmaGRP.App.Main()
于 2013-01-10T16:00:47.547 に答える