如何在wpf中浏览整个资源文件.找到所有关键点并根据这些关键点生成图像



假设我的项目中只有几个资源字典。他们的名字像1,2,3等…从后面的代码我想去";1〃;资源文件,查找所有";x: 键";并通过该键制作图像。。。每个资源字典文件看起来都是这样的,但都有许多这样的代码:

<DrawingImage x:Key="Image1"  x:Name="Image1">
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 H64 H0 Z">
<DrawingGroup.Transform>
<TranslateTransform X="0.091821998357772827" Y="0" />
</DrawingGroup.Transform>
<DrawingGroup Opacity="1" Transform="1,0,0,1,1,1.01">
<DrawingGroup Transform="1,0,0,1,6.03,28.74">
<GeometryDrawing Geometry="F1 M64 26.4,0 0,31.3z">
<GeometryDrawing.Pen>
<Pen Brush="#FF000000" Thickness="1" StartLineCap="Flat" EndLineCap="Flat" LineJoin="Miter" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
<DrawingGroup Transform="1,0,0,1,2.82,-0.01">
<GeometryDrawing Geometry="F1 .4,21.8 53.1,45.7 29.7,49.9 6.7,54 0.1,29.7 0.1,29.7 0.1,29.7 50.4,21.8z">
<GeometryDrawing.Pen>
<Pen Brush="#FF000000" Thickness="1" StartLineCap="Flat" EndLineCap="Flat" LineJoin="Miter" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
<DrawingGroup Transform="1,0,0,1,0,20.91">
<GeometryDrawing Geometry="F1 0,15.4 0,0z" />
</DrawingGroup>
</DrawingGroup>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>

这段代码是由Xaml到SVG转换器制作的,所以我有一些库,其中包含来自不同资源词典的图像,并希望将它们添加到集合中,然后通过ViewModel等将其绑定。。。每个资源当然都有唯一的x:key。我试着把它们添加到StackPanel中,然后像一样通过StackPanel

foreach(var image in StackPanel)
{
Image image1 = new Image();
image1.Source = image;
MyCollection.Add(image)
}

但那有点乱。希望你们能帮我找到更好的解决方案!

您可以在代码中加载资源字典,并迭代它们的键,如下所示:

if (!(Application.LoadComponent(
new Uri("YourUriToYourResourceDictionary.xaml", 
UriKind.Relative)) is ResourceDictionary rd))
{
return;
}
var keys = rd.Keys;
foreach(var key in keys)
{
//Use Application.Current.TryFindResource(key) and do whatever you need to do.
}

最新更新