gpt4 book ai didi

silverlight - 在Silverlight中,使用XAML剪贴画的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 00:32:34 25 4
gpt4 key购买 nike

假设我已经在 XAML 中为我的 Silverlight 应用程序构建了一些剪贴画,或者从 http://www.xamalot.com 下载它。 ,在我的应用程序中使用它的最佳方式是什么?

最好为每件艺术品创建一个用户控件吗?或者有更好的方法可以从资源字典中引用它吗?

更新:

提供的答案非常详细,似乎暗示将其用于比我想象的更大的目的。我真的只是想知道使用 XAML 剪贴画(例如)工具栏上的按钮的最佳方式。

最佳答案

有更好的方法。

您将为每件剪贴画提供一个单独的文件,但没有网站使用的包装器,直接在资源字典中使用 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,它兑现了基于矢量的图形的 promise ,它允许将图像缩放到指定的大小。

您需要向项目添加一个新的模板化自定义控件,并将其命名为XamlImage。您不需要对它做任何事情,它只需要存在即可。

暂时让我们将此资源字典添加到 App.Xaml 中(它不太可能保留在其中)。

现在您可以使用以下方法将此图像放置在页面中:-

<local:XamlImage Template="{StaticResource contactnew}"  />

现在有几种前进方式,具体取决于您的真实意图和数量,场景会有所不同,我无法详尽地发表评论。所以采取两个极端......

如果您只想从中选择一些图像,那么您可以简单地创建更多文件并将它们添加到 app.xaml 的 MergedDictionaries 中。然而,最大的缺点是所有这些图像 Xamls 都会在应用程序启动时解析和加载,这可能是不可取的。

另一方面,您可能有一个大型的分类 Xaml 剪贴画库。在这种情况下,您需要将它们放在文件夹结构中,并为每个文件包含一个标准大小的缩略图 png。充当目录的 Xml 文件,然后根据需要加载 Xaml 文件。在这种情况下,您可以从文件中删除 ResourceDictionary 并将 ControlTemplate 作为根元素,使用 XamlReader 加载模板,然后缓存模板在您自己的字典中(可能作为目录实现的一部分)。

关于silverlight - 在Silverlight中,使用XAML剪贴画的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com