Вы можете включить XAML в качестве содержимого или в виде файла на веб-сервере и использовать 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>
Затем, используя все вашилюбимый трюк для загрузки содержимого, получить приведенную выше строку и загрузить ее:
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 для загрузки его на основе идентификатора (мой документ XML имеет нескольковсе свободно плавающие активы, помеченные идентификатором):
<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>
...