InvalidCastException в MessageBox после XamlParseException - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь реализовать Crystal Reports для wpf.Если у пользователя не установлена ​​необходимая среда выполнения, должно появиться сообщение.

   private void TryToInitializeReportViewer()
    {
        try
        {
            reportViewer = new CrystalReportsViewer
            {
                ShowExportButton = false,
                ShowOpenFileButton = false,
                ShowRefreshButton = false,
                ShowCopyButton = false,
                ShowStatusbar = true,
                ShowLogo = false,
                Visibility = Visibility.Collapsed
            };

            ViewerGrid.Children.Add(reportViewer);
        }
        catch (XamlParseException ex)
        {
            Log.GetInstance().Error(LogUtil.Customize("ReportViewer konnte nicht initislisiert werden"), ex);

            MessageBox.Show(
                "Das Ausgabeformat 'REPORT' ist nicht verfügbar, da die CrystalReports Runtime nicht installiert ist", "Achtung", MessageBoxButton.OK, MessageBoxImage.Warning);
        }
    }

По какой-то причине первый MessageBox, который я хочу открыть, приводит к InvalidCastException со следующей трассировкой стека:

bei SAPBusinessObjects.WPF.Viewer.PageNumberDisplayConverter.Convert (значение объекта [], тип targetType, параметр объекта, культура CultureInfo). Bei System.Windows.Data.MultiBindingExpression.TransferValue () bei System.Windows.Data.MultiBindingExpression.Transfer () bei System.Windows.Data.MultiBindingExpression.UpdateTarget (Boolean includeInnerBindings) bei System.Windows.Data.MultiBindingExpression.AttachToContext (Boolean lastChance) bei System.Windows.Data.ataPataInataInMS.IDataBindEngineClient.AttachToContext (Boolean lastChance) bei MS.Internal.Data.DataBindEngine.Task.Run (Boolean lastChance) bei MS.Internal.Data.DataBindEngine.Run (объектный аргумент) bei System.Windows.ThreadingInWairWain, Аргументы объекта, Int32 numArgs) bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen (Источник объекта, обратный вызов делегата, аргументы объекта, Int32 numArgs, catchHandler делегата).(Состояние объекта) bei System.Threading.ExecutionContext.RunInternal (ExecutionContext executeContext, ContextCallback callback, Состояние объекта, Boolean preserveSyncCtx)..ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта). Bei MS.Internal.CulturePreservingExecutionContext.Run (обратный вызов CulturePreservingExecutionContext .Context, обратный вызов ContextCallback, состояние объекта)..Dispatcher.ProcessQueue () для System.Windows.Threading.Dispatcher.WndProcHook (IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean & handled).DispatcherCallbackOperation (Object o) bei System.Windows.Threading.ExceptionWrapper.InternalRealCall (обратный вызов делегата, аргументы объекта, Int32 numArgs) bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen (источник объекта, обратный вызов делегата, объектные аргументы, объектный аргумент, делегирование Int32Humler) bei System.Windows.Threading.Dispatcher.LegacyInvokeImpl (приоритет DispatcherPriority, время ожидания TimeSpan, метод делегата, аргументы объекта, Int32 numArgs)..Win32.UnsafeNativeMethods.MessageBox (HandleRef hWnd, текст строки, подпись строки, тип Int32)ssageBoxResult defaultResult, параметры MessageBoxOptions) bei System.Windows.MessageBox.Show (String messageBoxText, строковый заголовок, кнопка MessageBoxButton, значок MessageBoxImage) bei SapReportViewer.MainWindow.TryToInitializeReportViewer (пользователи) \ Visual Studio \ \ \ Project 2013 \ \ Studio в Visual Studio:\ SapReportViewer \ WpfApplication8 \ MainWindow.xaml.cs: Zeile 108. bei SapReportViewer.MainWindow..ctor () в C: \ Users \ KlammerT \ Documents \ Visual Studio 2013 \ Проекты \ SapReportViewer \ WpfApplication8 \ MainWindow.xaml.cs: Zeile73.

Если я поймаю InvalidCastException и попытаюсь показать еще один MessageBox, он отлично работает.

У кого-нибудь есть идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...