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

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

其次,需要引用ItemTemplate,而不是TreeView的Template

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

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