1

があり、 2 つのアイテム ( ) をTreeView手動で追加します。そして、その2つの項目TreeViewItemに適用したいのですが、適用されていないようです。実際には、ツリーにはより深いレベルがあります (つまり、item1 と item2 にはそれぞれ としてコレクションがあり、さらに多くのコレクションがあります)。ただし、最初のテンプレートが第 1 レベルの項目に適用されていないことを示すために、例を単純化しました。以下は背後にあるコードです。ItemTemplateItemTemplateItemsSourceHierarchicalDataTemplates

        TreeViewItem item1 = new TreeViewItem();
        TreeViewItem item2 = new TreeViewItem();
        trvRecordList.Items.Add(item1);
        trvRecordList.Items.Add(item2);

そして、これが私のxamlコードです。HierarchicalDataTemplate正しいところに書いてあります。

                      <HierarchicalDataTemplate x:Key="My_Template">                                                      
                            <StackPanel Orientation="Horizontal">
                                <Image Source="Images/Star_Blue.png"
                                       Margin="0,0,4,0" Height="16" Width="16"/>
                                <TextBox Text="abcd"/>
                            </StackPanel>
                        </HierarchicalDataTemplate>


                      <TreeView Name="trvRecordList" Margin="2"
                              ItemTemplate="{StaticResource My_Template}">                           
                     </TreeView>
4

2 に答える 2

1

TreeViewItemオブジェクトのリストをに追加しているためTreeView、My_Templateは適用されません。出力ウィンドウを確認すると、以下のようなエラーが発生します。

System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='TreeViewItem'

解決策は、My_Templateをそれ自体のItemTemplateプロパティに適用するTreeViewItemことです。以下は私があなたのコードに行った変更です

        TreeViewItem item1 = new TreeViewItem();
        TreeViewItem item2 = new TreeViewItem();
        item1.Items.Add("");
        item1.Items.Add("");
        item1.ItemTemplate = FindResource("My_Template") as HierarchicalDataTemplate;

        item2.Items.Add("");
        item2.Items.Add("");
        item2.ItemTemplate = FindResource("My_Template") as HierarchicalDataTemplate;

        trvRecordList.Items.Add(item1);
        trvRecordList.Items.Add(item2);

HierarchicalDataTemplateの詳細については、以下のリンクを参照してください

http://blogs.msdn.com/b/mikehillberg/archive/2009/10/30/treeview-and-hierarchicaldatatemplate-step-by-step.aspx

編集:

My_Templateをに適用する場合は、TreeViewこのコードを試してください。

        trvRecordList.Items.Add("");
        trvRecordList.Items.Add("");
于 2013-01-29T11:15:10.377 に答える
0

ItemTemplateデータ オブジェクト用です。MSDN の ItemTemplateの備考を確認してください。

TreeViewItemは、データ項目ごとに生成されるコンテナーであり、 によってスタイル設定されますItemContainerTemplateMSDN の ItemContainerTemplate

于 2013-01-29T09:39:57.183 に答える