0

我的问题如下。我有一个 Canvas,我有一个名为“Node”的类。我创建了一个节点集合,对于每个节点,我需要在画布上某个特定位置的某个形状(椭圆、三角形、字母)。

当我单击一个节点时,我需要能够返回到父节点对象并对其进行更改。

添加 MouseLeftButtonUp 侦听器然后转到 e.OriginalSource 不起作用,因为原始源是 Ellipse 类型(或其他一些 Shape),而不是 Node 类型。

我看到这个问题的两种解决方案:

1)如果有某种方法可以将数据附加到椭圆,例如节点 ID,那会很好(例如 Ellipse.AddLogicalChild 或 Ellipse.SetCurrentValue,但我不确定这是否可行或是否适合使用其中一种方法)。2) 或者,我需要 Node 派生一些 Shape 类,以便我可以直接将它添加到 Canvas.Children。

我该怎么做其中之一?或者,如果您看到其他解决方案,请告诉我。

谢谢,

安东·卡涅夫斯基

4

2 回答 2

1

您可以使用 Dictionary 容器对所有形状和节点进行引用。要获得给定形状的节点,只需使用

dict.TryGetValue(shape, out Node);
于 2011-02-15T16:39:00.597 回答
1

您的节点类可能只是一个用户控件,它承载所需的形状作为其内容。即:在构造函数中创建所需的形状并设置为内容,然后将节点添加到网格中。

或者,您可以让形状成为节点类的成员(或不是),并使用节点类函数订阅事件。即:每个形状都会在其关联的节点类中触发一个事件。

于 2011-02-15T16:50:19.720 回答