저는 Windows 8 Metro 용 앱을 작성 중이며 Canvas의 자녀 - 부모 관계가 어떻게 작동하는지 이해하는 데 문제가 있습니다. 하나의 캔버스를 다른 하나의 자식에 추가하면 부모 캔버스가 시각적 트리에 추가 될 때까지 subcanvas '-> parent 속성은 null과 같습니다. 아래는 문제를 보여주는 샘플 코드입니다.Canvas에는 시각적 트리의 일부가 아닌 부모가 없습니다.
Xaml::Controls::Canvas^ testCanvas = ref new Xaml::Controls::Canvas();
Xaml::Controls::Canvas^ childCanvas = ref new Xaml::Controls::Canvas();
testCanvas->Children->Append(childCanvas);
int size = testCanvas->Children->Size; // size will be equal to 1
if(!childCanvas->Parent)
{
// this code is executed because ->Parent is null. Why is parent here null??
}
aCanvasThatIsPartOfTheVisualTree->Children->Append(testCanvas);
if(!childCanvas->Parent)
{
// this code does not get executed because ->Parent is not null, now that testCanvas is part of the visual tree.
}
는 또한 부모 얻을 수있는 VisualTreeHelper를 사용하여 시도했다 :
Xaml::Controls::Canvas^ theParent = (Xaml::Controls::Canvas^)VisualTreeHelper::GetParent(childCanvas);
을하고 behavour 남아 : testCanvas이 후 theParent가 testCanvas는 시각적 트리에 추가되기 전에 null의 경우, 및 null이 아닌 시각적 트리에 추가됩니다.
이것은 버그가 아닌 경우 누군가 부모가 시각적 트리의 일부가 아닌 subcanvas의 부모를 얻는 방법을 알려주시겠습니까? 버그 인 경우 알려진 해결 방법이 있습니까? 고맙습니다!
설명해 주셔서 대단히 감사합니다. 비주얼 트리에 연결된 캔버스의 부모를 결정할 방법이 없습니까? – James
잘 모르겠습니다. 나는 결코 전에 그것을 시도한 적이 없다. – mydogisbox
시각 트리에 붙어 있지 않을 때 하나 이상의 항목이 자식으로 가질 수 있으므로 단일 "부모"는 이해가되지 않을 것이라고 생각합니다. 부모님 컬렉션이 있어야합니다. 고맙습니다! – James