我有一个使用树视图的 GUI,它将数据对象呈现为行,包括用于表示每行的对象类型等的图标。我注意到将图标文件添加到每一行会减慢负载并渲染很多,所以我玩弄将图标重写为绘图的想法。我已经完成了一个概念验证并模仿了一个带有以下内容的图标
<Border Width="15" Height="15" BorderThickness="0" CornerRadius="4,4,4,4" Background="#22bb22" VerticalAlignment="Center">
<Path StrokeThickness="1.5" Stroke="#FFFFFFFF" Data="M 2,4 C 2,4 10,4 9,12 M 2,7 C 2,7 7,7 6,12 M 2,10.5 L 4,10.5"/>
</Border>
但是我看不到如何将其作为静态资源包含在我的 XAML 中。我想加载此绘图一次并在整个应用程序中重复使用它,而不必每次都重新绘制。我对图像做了类似的事情,创建了一个资源字典,然后有一个 StaticResourceExtension 类,通过该字典中的键查找缓存中的图像,并将其绑定到图像标记的源。例如
<Image Source="{y:ImageStaticResource {Binding IconString}}" Margin="0,0,0,0"></Image>
ImageStaticResource 是我的自定义类,datacontext 的 IconString 属性是在字典中查找的键,它返回图像位置的字符串。这很有效,而且效果很好。但我想用这些图纸做类似的事情,但不知道怎么做。我创建了一个新的静态资源扩展,它的功能完全相同,但加载了不同的资源字典,其第一个条目如下
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Border x:Key="Default" Width="15" Height="15" BorderThickness="0"></Border>
<Border x:Key="..\Resources\Images\AccountOnly.ico" Width="15" Height="15" BorderThickness="0" CornerRadius="4,4,4,4" Background="#22bb22" VerticalAlignment="Center">
<Path StrokeThickness="1.5" Stroke="#FFFFFFFF" Data="M 2,4 C 2,4 10,4 9,12 M 2,7 C 2,7 7,7 6,12 M 2,10.5 L 4,10.5"/>
</Border>
</ResourceDictionary>
所以我希望通过按键查找这个带边框的绘图(因为所有图标都可以由绘图周围的边框表示,但不知道该怎么做。有人可以提供建议吗?