![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
RastaDja |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Доброго времени суток уважаемые форумчане!
Есть у меня проект, в котором нужна генерация формы на лету, тоесть в зависимости от задачи. Эту задачу я думаю решить используя загрузку окна из XAML файла. Сейчас я описал такой класс
В файл "D:\\Task.xml" записал такой код
В строке (смотрите первый код) DependencyObject rootElement = (DependencyObject)XamlReader.Load(s); получаю такую ошибку: "Не удалось создать "Click" на основе текста "Button_Click".": номер строки "7" и позиция в строке "48". Подскажите как правильно все сделать, буду весьма признателен. -------------------- The more closely you look at one thing, the less closely can you see something else. |
||||
|
|||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Судя по всему - так сделать не получится.
Надо делать, наверное, через BAML. Подскажите, как создать BAML файл, чтоб правильно были указаны все теги, в частности x:Class. -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Kefir |
|
|||
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Почитай вот тут: http://msdn.microsoft.com/en-us/library/cc...6(v=vs.95).aspx
В частности часть:
|
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Kefir, следуя из выше указанного, я не могу использовать код в XAML. Это очень плохо, ведь я заранее не знаю сколько и каких элементов управление будет на форме, а ещё хуже - не знаю, какие действия надо сделать при нажатии на эти элементы.
А есть ли у вас ответ на второй вопрос? Спассибо -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 2 Всего: 118 |
зато есть всякие IronPython-ы ... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Видимо BAML можно юзать только из ресурсов. Или я не прав?
Блин, придумал велосипед: 1. Создать XML вида
Но ведь это же явное извращение. Как тогда работать с листом, со списком, текст боксом?... Ума не приложу. Может кто уже столкнулся с таким заданием. Посоветуйте умное решение. Добавлено @ 11:28 Спасибо за совет, сейчас почитаю. Это сообщение отредактировал(а) RastaDja - 1.8.2011, 12:54 -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
RastaDja, я думаю подход в корню не правильный. Зачем тебе BAML, ты храни окна в сборках *.dll и их загружай.
Это сообщение отредактировал(а) Rohoss - 1.8.2011, 13:49 |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Rohoss, хм. Никогда такое не делал. Можно пример? А вообще-то поясню что надо сделать: Нужно чтоб приложение просканировало указанную папку, из этой папки взяло имена файлов, из этих имен построило список, и вот когда мы нажмем на нужный элемент списка (тоесть выберем файл) и из этого файла построится нужный нам интерфейс. Мало того, этот интерфейс должен реагировать на юзание элементов в нем. А главное - это то, чтоб можна было таких интерфейсов создать много, и чтоб это было легко. Вот почему я выбрал модель построения, которую описал в начале темы. Жаль что Майкрософт не реализовала эту возможность Тоесть я хочу оперировать таким кодом
если компиляция в длл позволит такое сделать, тогда все ок. Относительно IronPython IronRuby, это мне напоминает MSScript, хотя может я ещё не увидел различий Это сообщение отредактировал(а) RastaDja - 1.8.2011, 14:21 -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
RastaDja Случайно не оно, там вроде что-то про чтение ксамла из файла.
http://msdn.microsoft.com/en-us/library/cc...4(v=vs.95).aspx Это сообщение отредактировал(а) hexzo - 1.8.2011, 14:46 |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
RastaDja, пример может быть чуть позже. Вообще, ты ошибаешься что майкрософт такое не реализовали, смотри MEF
|
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Тут я имею ввиду, что майкрософт не реализовали использование тега <x:Code> при динамической загрузке XAML. А такая реализация - это очень нужная, на мой взгляд, вещь. Смотрю. Пока ещё не понял чем это поможет мне в моей задачи. Может туплю, это факт, но всеравно не понимаю. Не сочтите за наглость - жду примера, так как искал что-то подобное - не нашол. -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Создаём одну сборку, в которой будут вызываться окна с dll, и создаём саму dll, в которой потом создаём окно.
Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Только учти, я набросал быстро, абы как. но думаю смысл должен быть понятен
Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
это я уже сделал, в топике мой код аналогичен. Rohoss спасибо за сборку (+). Утром на Работе посмотрю. Если будут вопросы обращусь ещё)) Это сообщение отредактировал(а) RastaDja - 1.8.2011, 23:19 -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: нет Всего: 5 |
Rohoss, ваш пример хороший, но он действует внутри сборки. Как подключать модули не зная имен типов внутри модуля - это не понятно. К тому-же, не хочется перекомпилировать сборку каждый раз, и под каждого закажкика, когда нужно добавить одно или два окна. Все-таки хочится делать все попроще. Раньше для этого была написано скрипт машина, с прописаными заранее функциями и т.д.
Сейчас ее возможностей маловато, хочется писать программы под современный интерфейс используя WPF, в тоже время хочется быстро редактировать окно, или часть окна (некоторые части будут загружатся внутрь окна главного приложения). Хотелось бы открыть блокнот, набрать за 30-40минут код, и вуа-ля. Как-то не хочется велосипедить со скрипт машиной, не важно что это Shell, Python, VBScript или что-то другое.. Но видимо придется. Ваша идея действительно хорошая, но как это сделать для любой ДЛЛ, не только из сборки, и к тому-же - это уже скомпилированный файл, который нет возможности поправить (заменить int a=2 На int a=3 например, не получится). Это сообщение отредактировал(а) RastaDja - 2.8.2011, 20:31 -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |