質問

私が使っているコンポーネントのラインナップ。純3.0です。

私は比較的簡単DataTemplateとして定義されCellTemplateのためのGridView.期待しているDataTemplateのVisualTree産に含まれるFrameworkElementFactoryものがnullの場合いからのアクセスのGridViewColumnHeader.をクリックします。なぜVisualTree null?Iスにアクセスする必要性が高ます。ここでは、ListViewの定義:

<ListView ItemsSource="{Binding Stuff}" GridViewColumnHeader.Click="Header_Click">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="28">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <Image Name="statusImage" Width="16" Height="16" Source="../Images/media_play_green_16x16.png"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

このイベントハンドラ:

private void Header_Click(object sender, RoutedEventArgs e)
{
    GridViewColumnHeader gvch = e.OriginalSource as GridViewColumnHeader;

    // error! VisualTree is null!
    //gvch.Column.CellTemplate.VisualTree.GetType(); 
}
役に立ちましたか?

解決

これは既知のものにされ活動しています。まいにMSDNはその他の"権威のある"の引用が このMSDNフォーラムポスト 説明(う!):

FrameworkTemplate.VisualTree物件 ...主に使われ プログラムの作成 DataTemplate/ControlTemplateコード を定義するときには DataTemplate/ControlTemplate用 ーこのプロパティはnull ので コンポーネントのラインナップの用途別機構 インスタンスを生成するの構築ー 発生するテンプレート. (重視 追加)

そのVisualTreeプロパティは人口がテンプレート読み込みからー:では人口の場合にのみの構築にテンプレートを使用したコードFrameworkElementFactory.

のコンテンツを取得するテンプレート定義されたポ話FrameworkTemplate.LoadContent().この実現のインスタンスのテンプレートのルート要素きを訓練し、必要に応じてプロパティを設定します。又はランタイム環境を含んでいます。ものではございませんのスロットのmaterialisedインスタンスを含むウィンドウでコントロールのツリーの視覚が、おそらくしたい封止す。

他のヒント

この視ツリーがnullの場合はツリーの視覚性に近い 論理的なツリーVisual一.実際のコンテンツのテンプレート保存 TemplateContent オブジェクトがpublicメンバを使 LoadContent 方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top