Необработанная Система.ComponentModel.Win32Exception ' при использовании AvalonDock 2.0
Я использую AvalonDock 2.0, и когда я когда-либо открываю контейнер док-станции, в то время как в режиме отладки сбой приложения (он отлично работает при запуске без отладки). Я получаю следующее исключение:
необработанное исключение типа System.ComponentModel.Win32Exception' произошел в WindowsBase.dll файлы
дополнительная информация: операция успешно завершена
я наткнулся на это ответ, которые предлагают снять флажки с настроек исключений. Проводная вещь заключается в том, что она работала в первый раз. но этого больше не происходит. Я пробовал на других машинах он не работает. любые предложения о том, как это исправить.
Код Авалона (исключение в строке 5)
protected override IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) {
if (msg == Win32Helper.WM_WINDOWPOSCHANGING) {
if (_internalHost_ContentRendered) {
// the below line throw the exception
Win32Helper.SetWindowPos(_internalHwndSource.Handle, Win32Helper.HWND_TOP, 0, 0, 0, 0, Win32Helper.SetWindowPosFlags.IgnoreMove | Win32Helper.SetWindowPosFlags.IgnoreResize);
}
}
return base.WndProc(hwnd, msg, wParam, lParam, ref handled);
}
3 ответов
видимо есть вопрос подано, но без ответа до этого момента.
таким образом, в качестве обходного пути я обработал любые необработанные исключения, используя приложение.DispatcherUnhandledException С App.xaml.cs
.
Пожалуйста, проверьте это ответ для получения более подробной информации.
Код:
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
this.DispatcherUnhandledException += AppGlobalDispatcherUnhandledException;
}
private void AppGlobalDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) {
e.Handled = true;
}
для тех, кто еще приземляется на этой странице, я смог избавиться от проблемы со следующей настройкой выключен:
Инструменты > Параметры > отладка > общие > включить средства отладки пользовательского интерфейса для XAML
мой быстрый взлом заключается в том, что я отключил UpdateWindowPos() в классе LayoutAutoHideWindowControl во время конфигурации отладки.
internal void Show(LayoutAnchorControl anchor)
{
if (_model != null)
throw new InvalidOperationException();
_anchor = anchor;
_model = anchor.Model as LayoutAnchorable;
_side = (anchor.Model.Parent.Parent as LayoutAnchorSide).Side;
_manager = _model.Root.Manager;
CreateInternalGrid();
_model.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(_model_PropertyChanged);
Visibility = System.Windows.Visibility.Visible;
InvalidateMeasure();
#if !DEBUG
UpdateWindowPos();
#endif
Trace.WriteLine("LayoutAutoHideWindowControl.Show()");
}
к моему текущему опыту, это приводит только к инвалидности перетаскивания свернутых закрепляемых контейнеров.