在TreeView中查找ItemTemplate控件

时间:2009-03-13 11:46:07

标签: wpf treeview itemtemplate findname

我的树定义是:

<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 。什么是正确的解决方案?

1 个答案:

答案 0 :(得分:1)

尝试x:Name属性,而不是Name属性...

其次,您需要引用ItemTemplate,而不是TreeView的模板

此外,第二个参数必须是ListItem的容器,而不是数据项:

ContentPresenter container = (ContentPresenter) tree.ItemContainerGenerator.ContainerFromItem(item);
CheckBox box = (CheckBox) container.ContentTemplate.FindName("Foo", container);