2009-09-26 50 views
0

我试图扩展形状类来包含一个额外的变量,但发现类是密封的。如何使用替代实现方法简单地实现这一点?为什么System.Windows.Shape.Path是密封的?

正在创建一个新类并存储一个形状,通过最简单的方法传递所有的方法调用;我确定有更好的方法呢?

回答

1

WPF有一个强大的概念名为附加属性。我不确定你在做什么,但也许你可以通过使用这个概念来解决你的问题。要提供实例,Grid.RowGrid.Column属性是附加到Grid内的元素的属性。

<Grid> 
    ... 
    <TextBlock Grid.Row="1" Grid.Column="2" ... /> 
</Grid> 

TextBlock的类是不知道由所述Grid使用的Grid.RowGrid.Column性质。

您可以阅读更多关于attached properties on MSDN

+0

我应该稍微更具体;在这种情况下,变量是一个对象,所以我不认为这会工作,但好建议 – 2009-09-27 01:37:17

+0

这种方法如何不起作用?附加属性可以是任何类型。 – 2009-09-27 03:06:42

+0

我用一种稍微不同的方法去创建一个新的对象,它存储了对路径的引用以及对我需要链接到的另一个对象的引用。我相信这可以用更优雅的方式完成,但对于我正在做的事似乎工作正常。 – 2009-12-06 06:07:10

2

如果要添加的变量是您只能读取的变量,并且是作为Path类的其他成员计算的结果,则可以添加一个将返回值的扩展方法。

然而,如果不是这种情况:

考虑创建一个类从路径的父继承 - 形状,这是不密封。 然后为此添加一个私人路径成员。您可以免费获取所有形状方法调用,只需为Path的唯一成员提供包装。