可以将Microsoft Visio绘图导出为包含Silverlight内容的网站。这在blog-post上进行了描述。
此类导出的输出如下:
我想将导出的XAML代码集成到另一个现有的Silverlight应用程序中。我发现这个blog-post告诉我如何在运行时动态加载XAML代码。
我想知道的是如何“合并”XAML文件和data.xml以及如何获取对XAML代码项的引用,以便更改某些文本...
答案 0 :(得分: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中运行“另存为Web”之前,您可以遍历所有形状并将其 HideText ShapeSheet单元格设置为true。这将阻止生成所有字形xaml,并且您仍然可以访问data.xml中的文本字符串。我想你不会从正确的字体缩放中受益,但这取决于你的场景。如果获得正确的比例非常重要,那么您可以解析字形元素的RenderTransform属性(在属性语法中描述,而不是属性元素语法)。
雕文在那里(我猜)因为它反映了Visio在应用程序中的工作方式,即在Visio中你可以选择形状文本中的单个字符并应用不同的字体和格式,但如果你不需要,我我很想抛弃字形集合,只是像@slfan建议的那样使用TextBlock。
答案 1 :(得分: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-straight-from-xaml.aspx。
您可以忽略的所有JavaScript和HTML文件,即识别控件所需的XML文件。 XML中的ID指的是XAML文件中的相应元素。