2011-02-15 39 views
0

我的問題如下。我有一個畫布,我有一個名爲「節點」的類。我創建了一個節點集合,並且對於我需要的某個特定位置的畫布上的每個節點(橢圓,三角形,字母)。如何用C#和Silverlight解決以下問題? (在畫布上的形狀)

當我點擊一個節點時,我需要能夠回到父節點對象並對其進行更改。

添加一個MouseLeftButtonUp偵聽器,然後去e.OriginalSource不起作用,因爲原始源的類型是Ellipse(或其他Shape),而不是類型Node。

我看到了兩個解決方案,這一問題:如果有某種方式來連接數據到橢圓,諸如節點ID

1),這將是很好(有點像Ellipse.AddLogicalChild或Ellipse.SetCurrentValue ,但我不確定這是否可行,或者是否適合使用這些方法之一)。 2)或者,我需要Node派生一些Shape類,以便我可以直接將它添加到Canvas.Children。

我該如何做其中之一?或者,如果您看到另一個解決方案,請告訴我。

感謝,

安東Kanevsky

+0

您可以使用Dictionary 進行映射 – Stecya 2011-02-15 16:38:40

回答

1

您的節點類可能只是一個用戶控件,它將所需形狀作爲其內容進行託管。即:在構造函數中創建所需的形狀並將其設置爲內容,然後將節點添加到網格中。

或者,您可以只將形狀作爲節點類(或不是)的成員,並使用節點類函數訂閱事件。即:每個形狀將在其關聯的節點類中激發一個事件。

+0

您能否詳細闡述您的解決方案? – akanevsky 2011-02-15 17:04:17

1

你可以用它來瘡參考字典容器所有形狀和節點。爲了讓Node成形,只需使用

dict.TryGetValue(shape, out Node);