有更好的方法。
对于每个片段,您将拥有一个单独的文件,但不是站点使用的包装器,直接在资源字典中使用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>
</Canvas>
</Viewbox>
</ControlTemplate>
</ResourceDictionary>
这里有两个作用,首先使用ControlTemplate
来包含图像,这是一种更有效的存储方式,当图像被多次使用时(例如用作图标)。
其次,它使用了Viewbox
,实现了矢量图形的承诺,它允许将图像缩放到指定的大小。
您需要向项目添加一个新的Templated Custom Control
,并将其命名为XamlImage
。您不需要对其进行任何操作,只需存在即可。
暂时先将此资源字典添加到App.Xaml中(这可能不是它最终所在的位置)。
现在,您可以使用以下方式在页面中放置此图像:
<local:XamlImage Template="{StaticResource contactnew}" />
现在有几种不同的方法,具体取决于您的真实意图和数量,情况过于复杂,我无法详尽评论。因此,我们来看两个极端情况...
如果您只想从中挑选出几张图片,那么您可以创建更多的文件,并将它们添加到app.xaml的MergedDictionaries中。然而,这样做的一个很大的缺点是,在应用程序启动时需要解析和加载所有这些图像Xaml,这可能不是理想的选择。
另一方面,您可能拥有一个大型分类的Xaml剪贴画库。在这种情况下,您需要将它们放在文件夹结构中,并为每个剪贴画包含一个标准大小的缩略图png。还需要一个Xml文件作为目录,然后按需加载所需的Xaml文件。在这种情况下,您可以放弃文件中的ResourceDictionary,并将ControlTemplate作为根元素使用XamlReader加载模板,然后将模板缓存到自己的字典中(可能作为目录实现的一部分)。
contactnew
是从哪里来的?你关于如何将图像放置在页面中的示例不容易理解。 - Killnine