WPF - Catel - отключить CommandManager для окна в другом потоке - PullRequest
0 голосов
/ 02 июля 2018

Поскольку PleaseWaitService был удален с помощью Catel 5.0.0, я скопировал исходный код реализации из версии 4.5.0 в отдельную библиотеку и связал «новую» библиотеку и использовал Сервис, как и раньше.
Но поскольку были некоторые ошибки с PleaseWaitService в сочетании с нашей существующей кодовой базой, я переписал и упростил Сервис (просто поддерживающий WPF).

Теперь я показываю PleaseWaitWindow в другом потоке, который работает в моем тестовом проекте, но не работает. Я получаю InvalidOperationException, когда звоню window.Show() (окно было создано в той же теме).

В стеке трассировки исключения находятся некоторые вызовы из Catel CommandManager

at System.Windows.Threading.Dispatcher.VerifyAccess() at Catel.MVVM.CommandManager.SubscribeToKeyboardEvents(FrameworkElement view) in C:\CI_WS\Ws\107901\Source\Catel\src\Catel.MVVM\Catel.MVVM.Shared\MVVM\Commands\CommandManager.wpf.cs:line 64 at Catel.MVVM.CommandManager.OnWindowLoaded(Object sender, RoutedEventArgs e) in C:\CI_WS\Ws\107901\Source\Catel\src\Catel.MVVM\Catel.MVVM.Shared\MVVM\Commands\CommandManager.wpf.cs:line 78 [...] at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)

Я зарегистрировал одну команду в CommandManager, которая не будет использоваться в моем пользовательском окне PleaseWaitWindow.

Итак, мой вопрос: как я могу отключить стандартную инъекцию из Commandmanager в окно?

Привет

1 Ответ

0 голосов
/ 02 июля 2018

Преимущество Catel в том, что все подключаемо. Если вам нужно другое поведение для менеджера команд, вы можете создать свою собственную версию и по-разному переопределить то, что хотите. Не забудьте зарегистрировать его в ServiceLocator.

...