DataTemplate定義されたポnullをVisualTree
-
23-09-2019 - |
質問
私が使っているコンポーネントのラインナップ。純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 方法。