如何加载FrameworkElement

时间:2016-07-03 09:04:09

标签: wpf

我正在写一个测试。我使用 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未加载。

我想知道,我如何开始加载控制权。

1 个答案:

答案 0 :(得分:0)

问题解决了。我将根元素放到Window并调用Show方法。

<Window>
    <StackPanel x:Name='Element1'>
        <... />
    </StackPanel>
</Window>

之后 VisualTreeHelper.GetChildrenCount VisualTreeHelper.GetChild方法为每个元素返回正确的值