2012-03-08 2 views
1

Можно экспортировать чертежи Microsoft Visio в качестве веб-сайта, содержащего контент Silverlight. Это описано на этом blog-post.Интеграция Visio с экспортированным XAML в приложение Silverlight

Выход такого экспорта является следующим:

  • xaml_1.xaml (содержит структуру управления)
  • data.xml (содержит все текстовое содержание, такие как этикетки и т.д.)
  • несколько ява-скрипт файлы
  • * .htm страницы с Silverlight контейнера
  • другие файлы, такие как * .css и изображения

Я хотел бы объединить экспортированный код XAML в другое существующее приложение Silverlight. Я нашел это blog-post, рассказывающее мне, как динамически загружать XAML-код во время выполнения.

Что я хотел бы знать, так это то, как «объединить» XAML-файл и data.xml и как я могу получить ссылку на элементы кода XAML, чтобы изменить некоторые тексты ...

ответ

0

Я думаю, вам нужно немного сгенерировать сгенерированный XAML. К сожалению, Visio генерирует глифы для каждого символа. Если вы хотите изменить текст во время выполнения, вам придется удалить эти глифы и самостоятельно добавить необходимые элементы управления (например, TextBlock).

Вы можете загрузить XAML в Silverlight с помощью XamlReader.Load. Хорошее описание вы найдете здесь: http://blogs.silverlight.net/blogs/msnow/archive/2008/10/09/silverlight-tip-of-the-day-60-how-to-load-a-control-straight-from-xaml.aspx.

Все файлы JavaScript и HTML, которые вы можете игнорировать, XML-файл, необходимый для идентификации ваших элементов управления. Идентификаторы в XML относятся к соответствующим элементам в XAML-файле.

+1

Так что, в основном, мне нужно проанализировать XML-файл, чтобы получить идентификаторы элементов, где я должен вводить новый объект (например,текстовый блок)? – froeschli

1

В связанном файле xaml js (например, xaml_1.js) есть функция handleMouseUp, которая считывает идентификатор формы из строки «name» (XAML), а затем вызывает OnShapeClick в frameset.js. Этот метод, который является общим для всех js-based типов Save as web output, затем вызывает другие методы для заполнения таблицы данных или получения гиперссылок, найденных в data.xml. Если вы посмотрите на функцию FindShapeXML в frameset.js, вы увидите, что она получает соответствующие данные на основе идентификаторов страницы и формы (обратите внимание, что идентификаторы формы уникальны для страницы в соответствии с самим Visio).

С точки зрения создания текста с привязкой к данным или динамической формы один способ обхода глифов, который подчеркивает @slfan, не позволяет выводить текст. Например, перед запуском Save As Web в Visio вы можете пропустить все фигуры и установить для них HideText ShapeSheet ячейку в true. Это предотвратит создание всех глифов xaml, и вы все равно получите доступ к текстовой строке в файле data.xml. Я предполагаю, что тогда вы не выиграете от правильного масштабирования шрифта, но это зависит от вашего сценария. Если было действительно важно получить масштаб правильно, вы могли бы проанализировать атрибут RenderTransform (который описан в синтаксисе атрибута, а не синтаксисе элемента свойства) элементов глифа.

Символы есть (я угадываю), потому что он отражает то, как Visio работает в приложении, то есть в Visio вы можете выбирать отдельные символы в тексте фигуры и применять разные шрифты и форматирование, но если вам это не нужно, У меня возникнет соблазн сорвать коллекцию глифов и просто использовать TextBlock, как предлагает @slfan.