首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTemplateSelector中的DataTemplate引用父DataTemplateSelector吗?

DataTemplateSelector中的DataTemplate引用父DataTemplateSelector吗?
EN

Stack Overflow用户
提问于 2014-03-01 10:32:43
回答 2查看 133关注 0票数 0

我有想要显示的具有不同属性的ListView,其中一些是列表本身。这些子列表将使用与父列表中的列表相同的DataTemplates (但缩进)。

有没有办法让子列表(虽然我使用的是ItemsControl,所以不用担心滚动)提示者引用定义它的DataTemplateSelector?

例如:

代码语言:javascript
复制
<ListView ItemTemplateSelector={StaticResource MyDataTemplateSelector}.../>

<selectors:MyDataTemplateSelector x:Key="MyDataTemplateSelector">
    <selectors:MyDataTemplateSelector.ListTemplate>
        <DataTemplate>
            <StackPanel>
                <!-- Referring to the selector it is being defined in -->
                <ItemsControl ItemTemplateSelector="{StaticResource MyDataTemplateSelector}"/>
            </StackPanel>
        </DataTemplate>
    </selectors:MyDataTemplateSelector.ListTemplate>
</selectors:MyDataTemplateSelector>

它编译得很好,但在加载时似乎会崩溃,因为Windows.UI.Xaml中有一个错误。我认为这是因为它是一个循环引用。这可能是通过TemplatedParent绑定完成的吗?我已经尝试了一些不同的配置,但它们似乎不起作用。

EN

回答 2

Stack Overflow用户

发布于 2014-03-03 04:48:42

我没有让它像预期的那样工作,但最终以另一种方式绕过了它。这并不是对所有方法都可扩展。我基本上已经创建了一个2深度的树。我正在寻找的是一种适用于任何深度树的方法,但找不到理想的方法。它可能需要一个自定义控件。然而,我确实有一个2深度树的答案。

使用ListView,我按顶部节点对项进行了分组,然后将选择器用于GroupHeaderTemplateSelectorItemTemplateSelector的模板。

我认为可以将其扩展到N深度树,方法是使每个级别本身都是一个组,并且每个级别都由一个ListView显示,而不管它是否有项目。这可能是可怕的低效,但对于其他需要它的人来说,在紧要关头可能会起作用。使用Linq以一种相当简单的方式构建树也是可能的,所以至少是这样。

票数 0
EN

Stack Overflow用户

发布于 2014-06-30 23:36:56

我遇到了同样的问题,并且到处寻找"n“深度树的解决方案。我想出了一个解决方案,虽然我不是特别喜欢我的解决方案,但我最终将所有的子列表滚动到了我的主要级别。我保留了父母的引用,这样如果他们有父母,我就知道如何显示他们。

这样我就不需要"MyDataTemplateSelector“里面的ItemsControl了。只是一个想法,我想知道你是怎么想的。

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

https://stackoverflow.com/questions/22109373

复制
相关文章

相似问题

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