Есть лучший способ.
У вас будет отдельный файл для каждого фрагмента картинки, но не обертка, которую использует сайт, экземпляр Canvas непосредственно в словаре ресурсов, а не лучший способ продвижения вперед.
Мы начнем с ResourceDictionary
, но сделаем так: -
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:YourApplication">
<ControlTemplate TargetType="local:XamlImage" x:Key="SomeImage">
<Viewbox>
<Canvas> <!-- this the toplevel canvas from the site or your design -->
</Canvas>
</Viewbox>
</ControlTemplate>
</ResourceDictionary>
Это делает две вещи, во-первых, он использует ControlTemplate
для хранения изображения, это более эффективный способ хранения, когда изображение может использоваться несколько раз, например, когда изображение используется в качестве значка.
Во-вторых, он использует Viewbox
, который обеспечивает обещанную векторную графику, он позволяет масштабировать изображение до указанного размера.
Вам необходимо добавить в свой проект новый Templated Custom Control
и назвать его XamlImage
. Вам не нужно ничего с этим делать, просто нужно существовать.
Пока давайте просто добавим этот словарь ресурсов в App.Xaml (маловероятно, где он останется).
Теперь вы можете разместить это изображение на странице, используя: -
<local:XamlImage Template="{StaticResource contactnew}" />
Теперь есть несколько путей продвижения вперед в зависимости от ваших реальных намерений и объемов, сценарии для меня могут быть исчерпывающими, чтобы комментировать исчерпывающе. Итак, принимая две крайности ...
Если у вас есть только несколько изображений, из которых вы хотите выбрать, вы можете просто создать больше файлов и добавить их в MergedDictionaries
файла app.xaml. Однако большим недостатком является то, что все эти образы Xamls анализируются и загружаются при запуске приложения, что может быть нежелательно.
С другой стороны, у вас может быть большая библиотека категоризованных клипартов Xaml. В этом случае вы захотите поместить их в структуру папок и включить миниатюру png стандартного размера для каждого. Файл Xml, который будет действовать как каталог, а затем по требованию загружать файлы Xaml по мере необходимости. В этом случае вы можете исключить ResourceDictionary
из файлов и иметь ControlTemplate
в качестве корневого элемента, использовать XamlReader
для загрузки шаблона, а затем кэшировать шаблон в своем собственном словаре (возможно, как часть реализации каталога).