3

私のツリーの定義は次のとおりです。

<TreeView Name="tree" ItemsSource="{Binding Children}" >
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
            <CheckBox Name="foo"></CheckBox>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

TreeViewItem 要素を持っているので、対応する CheckBox を見つけようとしますが、

tree.Template.FindName("foo", item);

スロー

[System.InvalidOperationException] = {"This operation is valid only on elements that have this template applied."}

item.Template.FindName("foo", item)

私にnullを与えます。正しい解決策とは?

4

1 に答える 1

2

Name プロパティの代わりに x:Name プロパティを試してください...

次に、TreeView のテンプレートではなく、ItemTemplate を参照する必要があります。

また、2 番目のパラメーターは、データ項目ではなく、ListItem のコンテナーでなければなりません。

ContentPresenter container = (ContentPresenter) tree.ItemContainerGenerator.ContainerFromItem(item);
CheckBox box = (CheckBox) container.ContentTemplate.FindName("Foo", container);
于 2009-03-13T11:53:34.770 に答える