首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取TabItem的ContentTemplate实例

获取TabItem的ContentTemplate实例
EN

Stack Overflow用户
提问于 2012-08-15 22:24:37
回答 1查看 196关注 0票数 0

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

代码语言:javascript
复制
<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>

我想获得为我的每个MyContext实例生成的每个App:Task,如下所示(或类似):

代码语言:javascript
复制
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.ContentMyContext而不是Task。所以我想我应该使用:

代码语言:javascript
复制
var task = container.ContentTemplate.FindName("task") as Task;

但是这会抛出一个异常,因为在这一点上,ContentTemplate似乎还没有被应用。我怎么才能强迫它,或者以其他方式得到我想要的东西呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 22:30:29

为什么首先需要UserControl?

如果你需要访问一些东西,你还没有在你的项目上绑定足够的属性到UserControls。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11971113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档