0

我有一个带有 DataTemplate 的 ListBox,如下所示:

    <ListBox Name="listBox">
        <ListBox.ItemTemplate>
            <DataTemplate DataType="x:Type local:NumericIconDefinition">
                <Grid>
                    <ComboBox Name="IconComboBox"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我想获取 ComboBox 实例以便在后面的代码中对其进行操作。我发现一篇博文解释了获取 ListBoxItem 的过程:

ListBoxItem lbi = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromIndex(IndexInListBox);

但是我找不到访问该项目中的 Grid 和 ComboBox 实例的好方法。理想情况下,基于上面的代码,我想做这样的事情:

ComboBox cb = (ComboBox)lbi.GetChildByName("IconComboBox");
4

1 回答 1

1

您可以通过模板的 FindName 方法访问它:

ComboBox cb = (ComboBox)listBox.ItemTemplate.FindName("IconComboBox", lbi);

请注意,您只能在 ListBoxItem 完全加载后执行此操作,否则模板将不会被实例化

于 2009-10-12T11:59:50.650 回答