Можно ли создать dll с функцией (в каком-то классе), которая строит WPF окно.
Ответ
Конечно!
Вы точно так же можете из любой функции создать окно:
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();
Комментариев нет:
Отправить комментарий