我正在写一个测试。我使用 XamlReader.Parse 方法解析xaml以获取元素
<StackPanel x:Name='Element1'>
<ContentControl x:Name='Element6'>
<Button x:Name='Element7'>
<Label x:Name='Element8' />
</Button>
</ContentControl>
<Button x:Name='Element2' />
<FrameworkElement x:Name='Element3' />
<Button />
<DockPanel x:Name='Element4' />
<FrameworkElement x:Name='Element5' />
<FrameworkElement />
</StackPanel>
接下来我想迭代每个视觉元素。我使用 VisualTreeHelper.GetChildrenCount 和 VisualTreeHelper.GetChild 方法。 根StackPanel的 VisualTreeHelper.GetChildrenCount 返回7,它是正确的。但是对于ContentControl(元素6), VisualTreeHelper.GetChildrenCount 返回0。
我检查了IsLoaded属性并且它具有'false'值。这意味着ContentTemplate for ContentControl未加载。
我想知道,我如何开始加载控制权。
答案 0 :(得分:0)
问题解决了。我将根元素放到Window并调用Show方法。
<Window>
<StackPanel x:Name='Element1'>
<... />
</StackPanel>
</Window>
之后 VisualTreeHelper.GetChildrenCount 和 VisualTreeHelper.GetChild方法为每个元素返回正确的值