无法在模板中找到子控件

时间:2015-03-05 18:19:19

标签: c# .net wpf xaml code-behind

我有这样的控件:

<Grid DataContext="{Binding RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type controls:MyControl}}}">
<telerik:RadComboBox 
    x:Name="radComboBox1"
    Margin="0,5,5,5">
    <telerik:RadComboBox.Items>
        <telerik:RadComboBoxItem>
            <telerik:RadComboBoxItem.Template>
                <ControlTemplate>
                    <telerik:RadGridView
                        x:Name="radGridView1"
                        ItemsSource="{Binding GridItemsSource}"
                        AutoGenerateColumns="False"
                        SelectedItem="{Binding SelectedGridItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                    </telerik:RadGridView>
                </ControlTemplate>
            </telerik:RadComboBoxItem.Template>
        </telerik:RadComboBoxItem>
    </telerik:RadComboBox.Items>
</telerik:RadComboBox>

当我尝试访问子控件radGridView1时

Dim item = radComboBox1.Items(0) 
Dim gr As RadGridView = item.Template.FindName("radGridView1", item) 

gr为空

为什么在comboboxItem中找不到radGrid1?

谢谢

1 个答案:

答案 0 :(得分:0)

请注意,我在上一个问题中链接的答案......:

TextBox textBox = (TextBox)control.Template.FindName("Address", control);

... control是一个实际的控件,而不是像{+ 1}}那样的数据项。您可以使用ItemContainerGenerator.ContainerFromItem Method来获取数据项中的实际ComboBox.Items,如下所示:

ComboBoxItem

然后,您可以从中访问ComboBoxItem control = radComboBox1.ItemContainerGenerator.ContainerFromItem(item); 生成的项目。