获取TabItem的ContentTemplate实例

时间:2012-08-15 14:24:37

标签: c# wpf xaml

我有一个TabControl绑定到一个项目集合,其中每个项目应该由一个托管用户控件的普通TabItem表示,如下所示:

<TabControl x:Name="Items"
            ItemsSource="{Binding ElementName=This,Path=Files}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Header" Value="{Binding Path=Name}" />
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate DataType="{x:Type App:MyContext}">
                        <App:Task x:Name="task" Image="{Binding Path=Image}" />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>

ItemsSource绑定到ObservableCollection<MyContext>

我想了解为App:TaskMyContext个实例生成的每个foreach (var file in Files) { var container = Items.ItemContainerGenerator.ContainerFromItem(file) as TabItem; if (container == null) continue; var task = container.Content as Task; if (task == null) return; // ... } ,如此(或类似):

container.Content

MyContextTask而不是var task = container.ContentTemplate.FindName("task") as Task; 。所以我想我应该使用:

ContentTemplate

但这引发了异常,因为此时{{1}}似乎尚未应用。我怎么能强迫它或以任何其他方式得到我想要的东西?

1 个答案:

答案 0 :(得分:1)

为什么首先需要UserControl?

如果您需要访问某些内容,那么您的项目上没有将足够的属性绑定到UserControls。