2016-07-03 7 views
0

私はテストを行っています。私は、各視覚的要素を反復処理したいXamlReader.Parseに方法Framework Elementをロードする方法

<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> 

次を使用して要素を取得するために、XAMLを解析します。私はVisualTreeHelper.GetChildrenCountVisualTreeHelper.GetChildメソッドを使用します。 VisualTreeHelper.GetChildrenCountルートStackPanelのは7を返します。しかし、ContentControl(Element 6)の場合、VisualTreeHelper.GetChildrenCountは0を返します。

IsLoadedプロパティをチェックしたところ、「偽」値でした。これは、ContentControlのContentTemplateがロードされていないことを意味します。

私はコントロールの読み込みをどのように開始できるのか知りたいです。

+0

の正しい値を返しますそのVisualTreeHelper.GetChildrenCountVisualTreeHelper.GetChild法の後

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

私はあなたにもちょうど 'ContentControl.Loaded'イベントを待つことができると信じて - 何かが最終的にあると仮定するとコントロールへのローディング – Charleh

+0

@Charleh、no。私もそれについて考えました。しかし、解析された要素はウィンドウに表示されるまでロードされません。 –

答えて

0

問題は解決しました。私は、ルート要素をWindowに置き、Showメソッドを呼び出しました。各要素

+0

私はより良い解決策を見つけました。私はちょうど空のサイズのRectを使用してArrangeメソッドを呼び出しました。 –

関連する問題