2

目前正在为以下问题拔毛。我的代码将Rectangles 添加到 aGrid如下:

Dim rect As Rectangle
' Set a bunch of properties of rect here'

myGrid.Children.Add(rect)

它过去工作得很好,直到我需要在网格中找到我的矩形。我刚刚花了一个小时试图弄清楚如何使用RegisterName(),但可惜我失败了。

应该是myGrid.RegisterName(rect.Name, rect),rect.RegisterName(rect.Name, myGrid)还是其他什么?

我应该在之前、之后还是代替myGrid.Children.Add(rect). 我已经尝试了每一种组合,并且矩形不再出现在网格上。

4

2 回答 2

0

由于这里没有答案对我有帮助,我将发布我自己的(半)解决方案。我在多个站点和论坛上阅读过,以这种方式使用通常不是一个好习惯。FindName它实际上是用于解析现有的 XAML 代码,其他一切都是对方法的边界黑客攻击。

诸如此类的东西VisualtreeHelper和某些其他技巧可以帮助获得正确的 GUI 元素。如果没有太多并且性能不是一个大问题(在我的情况下),人们总是可以遍历所有可用的元素。我通过简单地创建一个对所有相关 UI 元素的引用数组并以这种方式找到它们来做到这一点。您的解决方案可能因实施和设计而异。我的解决方案并不完美和优雅,但它可以在几乎没有性能妥协的情况下完成这项工作。

于 2011-05-10T16:18:32.237 回答
0

我认为您不需要RegisterName显式调用...Rectangle有一个Name属性,就像 all FrameworkElements 一样,所以您可以调用FindName父级来找到您的Rectangle...

于 2011-05-05T22:57:06.890 回答