[英]Import and render the contents of a XAML file inline in another XAML file?
我有一个从Expression Design导出的XAML文件。 我想在我的一个用户控件中内嵌该XAML内容。 是否可以在要呈现的UserControl上引用要作为资源包含的外部XAML文件? 还是可以使用其他一些标记来标识要在当前位置呈现的项目中的XAML对象?
我正在使用Silverlight 4。
如果只是用户控件或网格的“资源”部分中的一堆东西,控件模板或数据模板,则可以使用合并的资源字典将其包括在内。
否则,如果它是实际的XAML内容,则需要将其全部放入用户控件或内容控件中,它们可能会包含在内-但您无法直接包含XAML文件,则需要将其复制并粘贴到其中。
您可以将XAML作为内容或Web服务器上的文件包括在内,并使用XamlReader.Load动态加载和创建Xaml内容。 没有控件可以直接执行您想要的操作(但是包装链接中描述的功能很简单)。
例如:
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Path x:Name="top" Width="24" Height="12" Stretch="Fill" Fill="#FF065F02" Stroke="#10000000" Data="F1 M 0,6L 12,12L 24,6L 12,0L 0,6 Z "/>
</Canvas>
然后,使用您喜欢的任何技巧来加载Content,获取上面的字符串并加载它:
Canvas c = XamlReader.Load(myXaml) as Canvas;
然后,将画布作为子级添加到父控件(或您要使用的任何类型,因为它不必是Canvas)。
var e = from a in XDocument.Load("resources.xml").Descendants("assets")
where (string) a.Attribute("id") == desiredId select a.FirstNode;
在上述情况下,我的Xaml位于标记为“内容”的文件中,并使用XDocument基于ID进行加载(我的XML文档具有多个自由浮动的资产,所有资产都标记有ID):
<assets>
<asset id="top">
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Path x:Name="top" Width="24" Height="12" Stretch="Fill" Fill="#FF065F02" Stroke="#10000000" Data="F1 M 0,6L 12,12L 24,6L 12,0L 0,6 Z "/>
</Canvas>
</a>
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.