2011-05-05 4 views
2

현재 다음 문제에 대해 머리카락을 꺼냅니다. 다음과 같이 내 코드는 GridRectangle의 추가 : 내가 그리드에 내 사각형을 찾기 위해 필요할 때까지Children.Add() 및 RegisterName()

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) 이전, 이후 또는 대신해야합니까? 모든 조합을 시도했는데 사각형이 더 이상 격자에 나타나지 않습니다. 그냥 있기 때문에 당신의 Rectangle ...

답변

0

를 찾기 위해 부모에 FindName를 호출 할 수 있도록

0

난 당신이 명시 적으로 RegisterName를 호출 할 필요가 있다고 생각하지 않습니다 ... Rectangle 모든 FrameworkElement들처럼 Name 속성이 있습니다 여기에 대한 답변이 도움이되지 않았으므로 직접 (반) 해결책을 게시 할 것입니다. 나는 여러 사이트와 포럼에서 읽었습니다. 일반적으로 이 아니며, FindName을 이런 식으로 사용하는 것이 좋습니다. 기존 XAML 코드를 구문 분석하기위한 것이고 다른 모든 방법은이 방법을 해킹하는 경계선입니다.

VisualtreeHelper과 같은 다른 트릭은 GUI의 올바른 요소를 얻을 수 있습니다. 너무 많지 않고 성능이 큰 문제가 아니라면 항상 모든 요소를 ​​반복 할 수 있습니다 (필자의 경우). 모든 관련 UI 요소에 대한 참조를 간단히 작성하여 이러한 방식으로 찾았습니다. 솔루션은 구현 및 디자인에 따라 다를 수 있습니다. 내 솔루션은 완벽하고 우아하지 않지만 성능 저하가 거의없이 업무를 수행합니다.

+0

찾을 수 없습니다. 이유는 모르겠다. myGrid의 자식을 수동으로 탐색 할 때 올바른 이름의 사각형이 표시됩니다. 그러나'.FindName ("rectName")'은'Nothing'을 반환합니다. – Phonon