我目前希望能夠使用PropertyGrid來允許用戶編輯我的一些類,但是我已經將對象傳遞給了它們使用的UITypeEditor。當用戶按下下拉列表時,我想顯示一個已經加載的紋理的列表框,以供選擇,如果他們想要使用應用程序尚未加載的紋理,他們可以單擊按鈕從文件對話框中選擇一個。如果我在這裏沒有意義的模擬形式:將對象傳遞給UITypeEditor
。
我的問題:要填充列表框,我需要訪問管理UITypeEditor資源列表的類。
現在我已經解決了我自己的類的這個問題,通過給他們創建他們的管理對象的參考。然後在UITypeEditor中使用該引用來訪問我需要的內容。但是我不能爲我沒有寫過的類做這個,比如XNA Texture2D類。
這裏是什麼我使用了一下類,如:
class StaticGeometryChunk
{
// Geometry data to draw with. Contains a reference to its managing
// class for use in its UITypeEditor.
public GeometryData { get; set; }
....
}
class Material
{
// These are XNA classes. I can't just add a reference to its managing
// class (I think?).
public Texture2D Texture1 { get; set; }
public Texture2D Texture2 { get; set; }
....
}
我一直在看我的選擇,他們似乎是:
- 充分利用管理類的靜態。
我真的不想這樣做。有幾個管理類,因爲每個資源加載不同。還有一些類需要在這些之前創建並傳入。
- 使管理類爲單例。
我也不想這麼做。這似乎是一種快速而骯髒的方式來「隱藏」問題,而不是「解決」問題。我也可能希望將來可以選擇單身人士消除幾個管理類。
- 創建一個包裝類,該類包含對管理類及其目標(如XNA Texture2D)的引用。
這是目前我正在考慮的事情。它會很簡單和快速的做,但有關它的事情讓我感到困擾,但我不知道是什麼。
對上述或其他方法的任何想法,以通過我所需要的UITypeEditor?
謝謝您的閱讀。
我目前的設計是這樣的: MaterialDatabase:保存包含Texture2D類的材質字典。 GeometryDatabase:保存包含GeometryData的StaticGeometryChunk的字典。 TileDatabase:保存包含StaticGeometryChunk和材質的Tiles字典。 創建這些類時,會傳遞一個樹視圖來顯示它們已加載的內容,它在樹視圖上的一個選擇觸發propertygrid以查看節點標記(對字典對象的引用)。 我有一種感覺,這意味着上下文將樹視圖? – Kath 2009-06-18 14:31:18