2012-02-07 60 views
2

我想爲圖像添加一些基本屬性。我通常會這樣做如何將基本屬性添加到類圖像類?

public class ExtendedImage: Image 
{ 
} 

但是,這是不允許的,因爲它是密封的。

還有什麼其他方法可以做到這一點?我想擴展Image的原因是因爲我正在尋找動態創建和銷燬對象,這些對象被拖放到應用程序周圍。所以我想添加操作處理程序和手勢,以及從各種顯示對象中添加和刪除對象。

我不相信我能夠將圖像的一個實例注入到我的基類中,因爲那樣當我嘗試讓我的動態創建的圖像響應各種操縱事件時,數據和圖像將會分離。 (根據圖像被放置在主畫布的位置,我需要它有不同的功能。

任何關於此問題的意見是極大的讚賞。

+0

檢查我編輯的答案。你可以使用Tag屬性來完成任務。 – 2012-02-07 16:36:20

+0

@PaulSasik現在嘗試,謝謝。 – Bob 2012-02-07 16:41:15

回答

3

您可以使用標籤屬性的實例相關聯,得到你想要的那種行爲類似於:

public class ExtendedImageController 
{ 
    // add methods and properties as necessary 
} 

// client code 
var img = new Image(); // ... 
img.Tag = new ExtendedImageController(img); // with reference to image 

// in some event handler: 
var ctrl = (ExtendedImageController)img.Tag; 
ctrl.DoCleanupThings(); 
// ... 
+0

@Bob:您必須實現與Image類相同的接口,並將屬性和方法調用轉發給圖像對象。 – 2012-02-07 15:43:34

+0

@Bob:具體來說,在這種情況下,您應該繼承FrameworkElement並與圖像組合。查看代碼更新。 – 2012-02-07 15:47:30

+0

非常感謝,現在就試試。 – Bob 2012-02-07 15:59:04