C# 定义几何图形的样式

C# 定义几何图形的样式,c#,wpf,xaml,wpf-style,geometrydrawing,C#,Wpf,Xaml,Wpf Style,Geometrydrawing,请不要将其标记为重复。相关问题与我所问的完全不同 我需要为大约180多个GeometryDrawing对象设置Pen和Brush属性。我的第一个想法是使用样式,但我了解到样式不能针对几何绘图,因为它不是从框架元素继承的。然后我考虑创建自己的GeometryDrawing2,它继承自GeometryDrawing,并在构造函数中设置Pen和Brush,但发现GeometryDrawing是密封的,无法继承 除了将属性复制粘贴180次之外,实现我想要的功能的最佳方法是什么 编辑 这是我的画集: &l

请不要将其标记为重复。相关问题与我所问的完全不同

我需要为大约180多个
GeometryDrawing
对象设置
Pen
Brush
属性。我的第一个想法是使用
样式
,但我了解到
样式
不能针对
几何绘图
,因为它不是从
框架元素
继承的。然后我考虑创建自己的
GeometryDrawing2
,它继承自
GeometryDrawing
,并在构造函数中设置
Pen
Brush
,但发现
GeometryDrawing
是密封的,无法继承

除了将属性复制粘贴180次之外,实现我想要的功能的最佳方法是什么

编辑 这是我的画集:

<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>


我需要为每个
GeometryDrawing
对象设置
Brush
Pen
,以显示
Red
Black
。XAML中通常的干净方式是通过
样式
,但正如我上面所解释的,这不适用于
几何绘图
。唯一的其他方法是将粘贴
Brush=“{StaticResource MyBrush}”
Pen=“{StaticResource MyPen}”
复制到180+
GeometryDrawing
对象中的每一个。或者有没有更快(仅限XAML)的方法?

您的问题仍然不完整,缺乏一个好的解决方法。但是,根据您目前提供的信息,我希望基于模板的实现能够解决您的问题。例如:

<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 Content="{StaticResource geometry1}"/>

不明白你的意思。您在哪里复制/粘贴属性?如何存储
GeometryDrawing
对象?为什么它们不在一个可以通过这种方式枚举和赋值的集合中?请改进您的问题,以便清楚地了解您现在正在做什么以及您希望能够做什么,同时确保包含一个很好的例子来说明所有这些。@PeterDuniho:请参阅我的编辑。@Funk的可能重复项一点也不重复。OP没有风格。@Clemens你们读过标题吗?很公平。这显然解决了眼前的问题。谢谢。