1

可以将 Microsoft Visio 绘图导出为包含 Silverlight 内容的网站。此博客文章对此进行了描述。

这种导出的输出如下:

  • xaml_1.xaml(包含控件的结构)
  • data.xml(包含所有文本内容,如标签等)
  • 几个java脚本文件
  • *.htm 带有 Silverlight 容器的页面
  • 其他文件,例如 *.css 和图像

我想将导出的 XAML 代码集成到另一个现有的 Silverlight 应用程序中。我发现这篇博文告诉我如何在运行时动态加载 XAML 代码。

我想知道的是如何“合并” XAML 文件和 data.xml 以及如何获得对 XAML 代码项的引用,以更改某些文本......

4

2 回答 2

1

在相关的 xaml js 文件(例如 xaml_1.js)中有一个 handleMouseUp 函数,它从 (XAML) 'name' 字符串中读取形状 ID,然后在 frameset.js 中调用 OnShapeClick。此方法对所有基于 js 的 Save as web 输出类型都通用,然后调用其他方法来填充详细信息表或检索 data.xml 中的超链接。如果您查看 frameset.js 中的 FindShapeXML 函数,您会发现它根据页面和形状 ID 获取适当的数据(请注意,根据 Visio 本身,形状 ID 对于页面是唯一的)。

在创建数据绑定或动态形状文本方面,@slfan 强调的字形问题的一种解决方法是阻止输出文本。例如,在 Visio 中运行 Save As Web 之前,您可以遍历所有形状并将其HideText ShapeSheet 单元格设置为 true。这将阻止生成所有字形 xaml,并且您仍然可以访问 data.xml 中的文本字符串。我想您不会从正确的字体缩放中受益,但这取决于您的情况。如果获得正确的比例真的很重要,那么您可以解析字形元素的 RenderTransform 属性(在属性语法而不是属性元素语法中描述)。

字形在那里(我猜),因为它反映了 Visio 在应用程序中的工作方式,即在 Visio 中,您可以选择形状文本中的单个字符并应用不同的字体和格式,但如果您不需要,我会很想放弃 glyphs 集合,只使用 @slfan 建议的 TextBlock 。

于 2012-03-21T21:44:08.347 回答
0

我认为您必须稍微调整生成的 XAML。不幸的是,Visio 会为每个字符生成字形。如果您想在运行时更改文本,您将必须删除此字形并自己添加所需的控件(例如 TextBlock)。

您可以使用 XamlReader.Load 将 XAML 加载到 Silverlight。您可以在这里找到一个很好的描述:http: //blogs.silverlight.net/blogs/msnow/archive/2008/10/09/silverlight-tip-of-the-day-60-how-to-load-a-control -直接来自-xaml.aspx

您可以忽略的所有 JavaScript 和 HTML 文件,识别控件所需的 XML 文件。XML 中的 ID 指的是 XAML 文件中的相应元素。

于 2012-03-21T11:48:27.093 回答