2011-05-17 39 views
1

我想擴展Shapes.Rectangle WPF內置類與一些額外的專有屬性。我可以用3種不同的方法做到這一點:請幫助擴展WPF內置類的最佳方法

  1. 聲明我自己的包裝類,並將WPF Rectangle作爲其成員之一。
  2. 用我的專有屬性聲明我自己的結構/類,並將它放在Rectangle.Tag字段中。
  3. 爲我的每個專有屬性聲明WPF依賴項屬性,並使用Rectangle.SetValue()& Rectangle.GetValue()方法。

從性能的角度(速度,內存消耗)來看,什麼是最好的方法,在每一時刻只有部分我的專有屬性會具有有意義的價值?

謝謝。

+0

你能給一個專有財產的例子,它應該做什麼? – 2011-05-17 15:43:23

+0

例如double originalWidth - 保存矩形的原始寬度 – Lion 2011-05-17 15:54:44

回答

0

你打算在任何地方使用你的「排序」派生的矩形,或者它有時會是一個矩形,有時候是你的?

如果你打算每次使用你的一些屬性,我會說你應該創建一個包裝類,並儘可能保持輕量級。這將保持您的代碼儘可能乾淨。除非你做了成千上萬個,否則我不認爲這個表現會成爲一個問題。如果你是,那麼你可能有其他問題! :)

1

您可以創建一個行爲來擴展行爲。

這是對現有元素添加行爲的最好和最簡單的方法(以及Blend friendly)。 它現在是WPF4的一部分,您可以在添加對System.Windows.Interactivity的引用後使用它。

+1

即使沒有WPF4,也可以創建附加行爲,只是不那麼容易:-) – CodeNaked 2011-05-17 18:53:51

+0

的確如此。 Blend3 SDK拯救:) – 2011-05-17 18:54:36