Использование всплывающих окон Mahapps.Metro в Elementhost

Я пишу надстройку SolidWorks, в которой я могу разместить WPF только в Winforms Elementhost. Теперь я хочу использовать всплывающее окно из Mahapps.Metro, которое зависит от размещения в MetroWindow. Есть ли способ использовать всплывающее окно из пользовательского элемента управления WPF? Я использую .NET 4.6.2, Mahapps.Metro 1.6 и SolidWorks 2018.


person Ksdmg    schedule 01.03.2018    source источник
comment
Фактически UserControl может абсолютно самостоятельно разместить Flyout. Настоящая проблема в том, что красивая круглая кнопка Flyout со стрелкой внутри не очень хорошо переносится на ElementHost: все, что вы получаете, - это квадратная кнопка с каким-то мусором внутри. Но в остальном он отлично работает до открытия и закрытия Flyout.   -  person jsanalytics    schedule 06.03.2018
comment
Согласно этой ссылке всплывающее окно зависит от того, размещено ли оно в окне метроокна?   -  person Ksdmg    schedule 06.03.2018
comment
Может, исправили с 2014 года? Просто попробуйте ... Вот что у меня есть. Обратите внимание на уродливую, испорченную кнопку. Но он кажется функционально работоспособным, по крайней мере, для того, чтобы содержать простой TextBlock.   -  person jsanalytics    schedule 06.03.2018


Ответы (2)


Похоже, информация, которую я нашел, здесь и здесь устарело. Я только что установил пакеты NuGet Mahapps.Metro и Mahapps.Metro.Iconpacks, и все работает, как ожидалось.

Если кто-то пытается сделать это и в надстройке SolidWorks, обязательно вручную загрузите новую версию System.Windows.Interactivity, потому что Solid загружает старую версию из базового каталога приложения, которая несовместима с Mahapps.Metro!

person Ksdmg    schedule 06.03.2018

Будьте очень осторожны при работе с надстройками .NET для solidworks. Если ваше приложение использует стороннюю библиотеку пользовательского интерфейса, вам необходимо скопировать эти сборки, на которые есть ссылки, в каталог главного приложения (sldworks.exe). По какой-то причине приложение домена - это приложение для хостинга exe, а не dll. CLR будет искать ссылки в каталоге sldworks.exe и не найдет, приложение выдаст неприятное исключение, которое приведет к сбою вашего SOLIDWORKS.

person Amen Jlili    schedule 16.03.2018
comment
Вам не нужно копировать библиотеки DLL, когда вы используете IL weaver, например Costura.Fody - person Ksdmg; 18.03.2018
comment
@ksdmg что делает ткач Il? - person Amen Jlili; 19.03.2018
comment
IL weaver встраивает все библиотеки, на которые есть ссылки, для которых для CopyLocal установлено значение true. Вы можете найти всю информацию об этом на странице costura GitHub! - person Ksdmg; 20.03.2018
comment
Это было бы спасением. Я их попробую. - person Amen Jlili; 20.03.2018