Страницы

Поиск по вопросам

суббота, 4 января 2020 г.

C# - Создание WPF окна в dll

#c_sharp #wpf #dll


Можно ли создать dll с функцией (в каком-то классе), которая строит WPF окно.
    


Ответы

Ответ 1



Конечно! Вы точно так же можете из любой функции создать окно: var window = new MyWindow(); window.Show(); Не забудьте подключить сборки PresesntationCore, PresentationFramework и WindowsBase, а в свежей версии ещё и System.Xaml. И вы можете точно так же определить класс с окном в DLL, как и в основном приложении, через XAML. Если у вас не получается добавить XAML для окна, вам понадобится вручную отредактировать csproj, как указано здесь. Если вы не в UI-потоке, и у вас WPF-приложение, вам придётся перебросить выполнение туда. Например, так: Application.Current.Dispatcher.InvokeAsync(() => { var window = new MyWindow(); window.Show(); }); Если у вас консольное приложение, всё немного сложнее, т. к. у вас нету UI-потока. Вам нужно его создать. Как это делать, написано здесь. Вот рабочий пример: var thread = new Thread(() => { var window = new MyWindow(); window.Show(); Dispatcher.Run(); }); thread.SetApartmentState(ApartmentState.STA); thread.Start();

Комментариев нет:

Отправить комментарий