Импортировать и отобразить содержимое встроенного файла XAML в другом файле XAML? - PullRequest
0 голосов
/ 26 марта 2010

У меня есть файл XAML, который я экспортировал из Expression Design. Я хотел бы сделать этот контент XAML встроенным в один из моих пользовательских элементов управления. Могу ли я сослаться на внешний файл XAML, который я хочу включить в качестве ресурса в пользовательский элемент управления, в котором я хочу его отобразить? Или есть какая-то другая разметка, которую я могу использовать для идентификации объекта XAML в моем проекте, который я хочу визуализировать в текущем местоположении?

Я использую Silverlight 4.

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Вы можете включить 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>
...
1 голос
/ 26 марта 2010

Если это просто набор материалов из раздела «Ресурсы» пользовательского элемента управления или сетки, шаблонов элементов управления или шаблонов данных, вы можете использовать объединенные словари ресурсов , чтобы включить его.

В противном случае, если это фактический контент XAML, вам нужно либо поместить все это в пользовательский элемент управления, либо в элемент управления содержимым, который может быть включен, но вы не можете напрямую включить файл XAML, вам необходимо скопировать и вставить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...