2009-09-26 54 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的唯一成員提供包裝。