powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
6 сообщений из 6, страница 1 из 1
Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
    #38703406
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, знатоки!

Моя проблема схожа с этой:
http://www.sql.ru/forum/922174-1/wpf-v-dll

Есть приложение, которое открывает формы из dllек. Решил взяться за WPF. Хочу модифицировать основное приложение таким образом, чтобы оно могло открывать и WPF формы.

Код вызова формы из основного приложения (без WPF):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            Assembly Assembly = Assembly.LoadFrom(DllName);

            Type Type = Assembly.GetType(ClassName);

            DllForm = (Form)Activator.CreateInstance(Type);
            DllForm.TopLevel = false;
            DllForm.Parent = panel1;
            DllForm.Dock = DockStyle.Fill;
            MethodInfo mymethod = Type.GetMethod(MethodName);
            mymethod.Invoke(DllForm, new object[] { Utils.OleToConStr(_myConnection), panel1 });
            DllForm.Show();
            DllForm.BringToFront();


Имена DllName, ClassName, Type, MethodName берутся в верхних частях кода. Опустим этот момент.

Метод "MethodName" находится в DLL проекте формы. Вот пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            
                    public void Generate(string con, Control c)
        {
            try
            {
                Size = c.Size;
                Dock = c.Dock;
                string constring = con;
                sqlcon = new SqlConnection(constring);
            }
            catch (Exception)
            { }
        }


В качестве Control c передаётся контрол из основного приложения типа Panel в который и вписывается новая форма.
По идее передавать контрол в "дочернюю" форму это лишнее, но тем не менее "реализовано уже так" и речь вовсе не об этом.

Вопрос: Как добавить поддержку WFP Window?
Я создаю WpfControlLibrary, добавляю WIndow (Wpf) и могу её открыть в основном приложении и взаимодействовать с ней. Но как мне вписать новую WPF форму в панель? У неё ведь нету свойства Dock. По координатам не получается. Так же не получилось и через ElementHost. Вообщем перепробовал кучу вариантов, но увы... Помогите, пожалуйста?
...
Рейтинг: 0 / 0
Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
    #38703490
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В WPF class library держать не окна, а ContentControl/CustomControl, хостить в винфорс-окне через тот же ElementHost. Свойство Dock им не нужно, т.к. если явно не заданы Width, Height, VerticalAlignment. HorizontalAlignment (если только у двух последних не значение Stretch), то они ведут себя, как если бы в винформс для них было бы задано Dock=Fill.
...
Рейтинг: 0 / 0
Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
    #38704075
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Не могли подкинуть пример запуска WPF Control из dll в приложении WinForms?
...
Рейтинг: 0 / 0
Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
    #38704095
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Не могли, ли, пожалуйста*
...
Рейтинг: 0 / 0
Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
    #38704164
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Ку.,
...
Рейтинг: 0 / 0
Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
    #38704532
Алексей Ку.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо огромное! Со всем разобрался. У меня так и было реализовано, но я не вытянул элемент вперёд (не сделал BringToFront). Вот и сидел мучался.
Вот код, который открывает WPF элемент, встраивает его в панельку и выполняет из неё метод (мало ли кому пригодится):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
             ElementHost elhost = new ElementHost();
                    elhost.Child = (UIElement)Activator.CreateInstance(type);
                    elhost.Parent = panel1;
                    elhost.Dock = DockStyle.Fill;

                    mymethod = type.GetMethod(MethodName);
                    mymethod.Invoke(elhost.Child, new object[] { Utils.OleToConStr(_myConnection)});

                    elhost.BringToFront();
                    elhost.Show();
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Открытие WPF формы из Dll в WinFormsApp и её "встраивание" в панель
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]