请不要将其标记为重复。链接的问题与我提出的问题完全不同。
我需要为大约180 + Pen
个对象设置Brush
和GeometryDrawing
属性。我的第一个想法是使用Style
,但我了解到Style
无法定位GeometryDrawing
,因为它不会从FrameworkElement
继承。然后,我考虑创建自己的GeometryDrawing2
,该GeometryDrawing
继承自Pen
并在构造函数中设置Brush
和GeometryDrawing
,但发现<ResourceDictionary>
<DrawingImage x:Key="Drawing1">
<DrawingImage.Drawing>
<GeometryDrawing Geometry="..." />
</DrawingImage.Drawing>
</DrawingImage>
<DrawingImage x:Key="Drawing2">
<DrawingImage.Drawing>
<GeometryDrawing Geometry="..." />
</DrawingImage.Drawing>
</DrawingImage>
<!--180 more such drawings-->
</ResourceDictionary>
已被密封且无法继承。
除了将属性复制粘贴180次之外,实现我想要的最佳方法是什么?
以下是我的图纸集:
Brush
我需要为每个Pen
个对象设置GeometryDrawing
和Red
来说Black
和Style
。 XAML中通常的简洁方法是通过GeometryDrawing
执行此操作,但正如我上面所解释的那样,这对Brush="{StaticResource MyBrush}"
不起作用。唯一的另一种方法是将Pen="{StaticResource MyPen}"
和GeometryDrawing
复制粘贴到180 + foo(4)
个对象中的每一个。或者是否有更快(仅限XAML)的方式?
答案 0 :(得分:1)
您的问题仍然不完整,缺乏合作Minimal, Complete, and Verifiable code example。但是,根据您目前提供的信息,我希望基于模板的实现可以解决您的问题。例如:
<ResourceDictionary>
<PathGeometry x:Key="geometry1">...</PathGeometry>
<PathGeometry x:Key="geometry2">...</PathGeometry>
<!-- etc. -->
<DataTemplate DataType="{x:Type PathGeometry}">
<DrawingImage>
<DrawingImage.Drawing>
<GeometryDrawing Geometry="{Binding}" Pen="..." Brush="..."/>
</DrawingImage.Drawing>
</DrawingImage>
</DataTemplate>
</ResourceDictionary>
然后,当您想要显示其中一个时,只需使用ContentControl
或ContentPresenter
即可。例如:
<ContentControl Content="{StaticResource geometry1}"/>