Модераторы: gambit, Kefir, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WPF UI в System.Addin, кто-нибудь так пробовал? 
V
    Опции темы
Idsa
Дата 3.4.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Partizan, я не работал ни с System.AddIn, ни с MEF... но из твоих слов сделал вывод, что MEF загружает сборку в родительский домен, а System.AddIn - в свой собственный. Так ли это?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Partizan
Дата 3.4.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Idsa, System.Addin может загружать либо в родительский домен, либо в новый домен, либо в отдельный процесс


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Idsa
Дата 3.4.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Partizan, а MEF?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Partizan
Дата 3.4.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Idsa, ну а MEF загружает в родительский smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Idsa
Дата 3.4.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Цитата(Partizan @  3.4.2009,  20:31 Найти цитируемый пост)
ну а MEF загружает в родительский smile

А чем вызвано такое ограничение?

Цитата(Partizan @  3.4.2009,  16:53 Найти цитируемый пост)
Основная фича System.Addin - изоляция плагинов... MEF обеспечивает другие вещи, очень, кстати сладкие, но не обеспечивает того, что даёт System.Addin smile

А чего еще не дает MEF по сравнению с System.AddIn?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Partizan
Дата 3.4.2009, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Цитата

А чем вызвано такое ограничение?


Idsa, у MEF  задачи другие


Цитата

А чего еще не дает MEF по сравнению с System.AddIn


MEF  просто другой =) Если не нужна изоляция расширения, то я бы, конечно, посоветовал использовать MEF...
Если изоляция, которую предоставляет System.Addin не нужна, то функционал вполне можно реализовать с использованием MEF smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
lehin
Дата 3.4.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



все-таки позволю себе привести свой пример - может моя ошибка сразу будет заметна

есть у меня плагин:

    [AddIn("Visual plugin")]
    public class VisualPlugin1 : AddInView.VisualPlugin
    {
        private System.Windows.FrameworkElement _control;

        public override string Name
        {
            get { return "Visual plugin"; }
        }

        public override System.Windows.FrameworkElement GetControl()
        {
            _control = _control ?? new UserControl1();
            return _control;
        }
    }

есть у меня хост и в нем метод загрузки плагинов:

        public void LoadAddIns()
        {
            _plugins = new List<PluginBase>();

            String path = AppDomain.CurrentDomain.BaseDirectory;
            AddInStore.Rebuild(path);
            IList<AddInToken> visualTokens = AddInStore.FindAddIns(typeof(VisualPlugin), path);

            foreach (AddInToken token in visualTokens)
            {
                _plugins.Add(token.Activate<PluginBase>(AddInSecurityLevel.Host));
            }

            foreach (PluginBase plugin in _plugins)
            {
                VisualPlugin visualPlugin = plugin as VisualPlugin;

                SimpleForm simpleForm = new SimpleForm();
                simpleForm.SetChild(visualPlugin.GetControl());
                simpleForm.Show();
            }
        }

все необходимые промежуточные объекты (контракты, адаптеры и пр. - все что нужно для AddIn) на месте, плагин загружается
проблема в том, что на форме контрол выглядит очень убого - не растягивается (не занимает весь ElementHost), не наследует стили и т.д. UserControl1 представляет собой обертку над простым winforms контролом.
Если UserControl в том же домене - он естесственно занимает весь контейнер ElementHost.

Кстати пытался сделать свой addin для wpf-калькулятора (от команды разработчиков технологии addin) - тот же простейший контрол в их приложении выглядит опять-таки убого (теряет цвет при перерисовке, отсутствуют стили xp несмотря на вызов System.Windows.Forms.Application.EnableVisualStyles(); )

Может что-нибудь посоветуете? 
Спасибо!

PM MAIL   Вверх
Partizan
Дата 3.4.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



lehin, у вас и хост, и плагин на Windows Forms?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
lehin
Дата 4.4.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



да, оба на winforms
wpf мне нужен только для передачи между доменами
соответственно, как и в примере, передаю wpf-контрол через INativeHandleContract

правда, та же проблема у меня возникает и при создании плагина с родными wpf-контролами - они точно так же не растягиваются

в конечном счете мне хотелось бы в качестве контейнера использовать DockContent с ElementHost (в приведенном примере - обычная форма с заполняющим ElementHost). Переданные через границу доменов контролы при изменении положения DockContent-панели (при любом изменении расположения панели) приводят к исключению в PresentationFramework (при этом кстати сама панель остается жить, но внутрии нее содержимое исчезает). Соответственно, контролы, созданные в том же домене ведут себя абсолютно нормально (растягиваются на всю панель, не выдают исключение при перемещении панели, выглягят в том же стиле)
PM MAIL   Вверх
Partizan
Дата 4.4.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



lehin, я думаю, что передачу между доменами можно как-нибудь осуществить и без оборачивания в FrameworkElement...если с обеих сторон WinForms, то нет смысла контролы оборачивать...потому что при использовании WPF System.Addin накладывает некоторые ограничения

http://msdn.microsoft.com/en-us/library/bb...odelLimitations


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
lehin
Дата 4.4.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



а разве есть что-то для передачи контролов между доменами? вариант с разделением на слои модель-вид-представление отпадает сразу
да и в принципе ограничения не настолько критичны в том случае, если основное приложение служит только для запуска addin-ов
если не сложно, может быть покажете пример winforms-хост - wpf-addin?
PM MAIL   Вверх
lehin
Дата 4.4.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



или пример wpf-хост - winforms-addin? 
на мсдн все примеры wpf-wpf. Когда меню в их addin-е контрол с чистого wpf на обертку winforms - опять те же грабли (после перерисовки контрол меняет цвет)
PM MAIL   Вверх
lehin
Дата 4.4.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



спасибо, кстати, за ссылку - посмотрел я примеры которые там приведены и попытался их в своем winforms приложении захостить. опять получил исключение (см. аттач)
но уже по крайней мере контрол из другого домена весь контейнер занимает)

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  1.jpg 49,32 Kb
PM MAIL   Вверх
lehin
Дата 4.4.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



нашел некоторое решение своей проблемы - для объекта DockPanel (http://sourceforge.net/projects/dockpanelsuite/) изменил свойство DocumentStyle со стандартного DockingMdi на DockingWindow - теперь исключение не выдается. 
Осталась единственная проблема - смена цвета фона контрола при перерисовке.
PM MAIL   Вверх
Partizan
Дата 9.4.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



lehin, совсем недавно наткнулся на статейку как раз о расширении WIndows Forms-приложения с помощью System.Addin

http://msdn.microsoft.com/ru-ru/magazine/cc700355.aspx


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.