WPF DataGrid ContextMenu вызывает сбой приложения - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть WPF DataGrid.ContextMenu XAML, определенный так:

<DataGrid.ContextMenu>
    <ContextMenu >
        <MenuItem x:Name="mChangeVessel" Header="Change Vessel" />
        <MenuItem x:Name="mChangeVoyage" Header="Change Voyage" />
    </ContextMenu>
</DataGrid.ContextMenu>

VB Обработчик:

Private Sub mChangeVessel_Click(sender As Object, e As RoutedEventArgs) Handles mChangeVessel.Click
    Try
        MessageBox.Show("Vessel Changed", "Test Message", MessageBoxButton.OK, MessageBoxImage.Information)
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error)
    End Try
End Sub

Private Sub mChangeVoyage_Click(sender As Object, e As RoutedEventArgs) Handles mChangeVoyage.Click
    Try
        MessageBox.Show("Voyage Changed", "Test Message", MessageBoxButton.OK, MessageBoxImage.Information)
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error)
    End Try
End Sub

На 4 из 5 компьютеров, на которых я запускаю приложение, оно работает нормально. На моем ноутбуке (где я провел обширное тестирование своего приложения и до сих пор у меня не было проблем), когда я щелкаю правой кнопкой мыши по сетке данных, мое приложение просто умирает. Вы можете видеть, что я пытался добавить некоторую обработку ошибок, но она не попала туда.

Мне кажется, что это проблема зависимости фреймворка .NET, но мне кажется, что на всех машинах установлена ​​последняя версия (4.7 ish).

Стоит ли ориентироваться на другую версию .NET Framework? Я нацеливаюсь на 4,5 Для чего нужны версии .NET «профиль клиента»?

Если эти вопросы .NET Framework вызывают неправильное дерево, кто-нибудь может подсказать, как мне отладить эту проблему? У меня нет Visual Studio на ноутбуке.

Edit:

Я добавил исключение из журнала событий приложений Windows. Кто-нибудь может указать мне правильное направление для решения этой проблемы? Я хотел бы сделать проверку зависимостей, чтобы убедиться, что на моей целевой машине есть все необходимые библиотеки. Каков наилучший способ сделать это?

Ошибка:

Application: WinnipegWpf.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentNullException
   at System.Windows.Automation.Peers.DataGridItemAutomationPeer..ctor(System.Object, System.Windows.Automation.Peers.DataGridAutomationPeer)
   at System.Windows.Automation.Peers.DataGridAutomationPeer.CreateItemAutomationPeer(System.Object)
   at System.Windows.Automation.Peers.ItemsControlAutomationPeer.FindOrCreateItemAutomationPeer(System.Object)
   at System.Windows.Automation.Peers.DataGridAutomationPeer.RaiseAutomationSelectionEvents(System.Windows.Controls.SelectionChangedEventArgs)
   at System.Windows.Controls.DataGrid.OnSelectionChanged(System.Windows.Controls.SelectionChangedEventArgs)
   at System.Windows.Controls.Primitives.Selector+SelectionChanger.End()
   at System.Windows.Controls.DataGrid.MakeFullRowSelection(ItemInfo, Boolean, Boolean)
   at System.Windows.Controls.DataGrid.HandleSelectionForCellInput(System.Windows.Controls.DataGridCell, Boolean, Boolean, Boolean)
   at System.Windows.Controls.DataGrid.OnContextMenuOpening(System.Windows.Controls.ContextMenuEventArgs)
   at System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
   at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
   at System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs)
   at System.Windows.Controls.PopupControlService.RaiseContextMenuOpeningEvent(System.Windows.IInputElement, Double, Double, Boolean)
   at System.Windows.Controls.PopupControlService.ProcessMouseUp(System.Object, System.Windows.Input.MouseButtonEventArgs)
   at System.Windows.Controls.PopupControlService.OnPostProcessInput(System.Object, System.Windows.Input.ProcessInputEventArgs)
   at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(System.Windows.Input.ProcessInputEventHandler, System.Windows.Input.ProcessInputEventArgs)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
   at System.Windows.Input.InputProviderSite.ReportInput(System.Windows.Input.InputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr, System.Windows.Input.InputMode, Int32, System.Windows.Input.RawMouseActions, Int32, Int32, Int32)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr, MS.Internal.Interop.WindowMessage, IntPtr, IntPtr, Boolean ByRef)
   at System.Windows.Interop.HwndSource.InputFilterMessage(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 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(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.Application.RunDispatcher(System.Object)
   at System.Windows.Application.RunInternal(System.Windows.Window)
   at WinnipegWpf.Application.Main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...