在DisplayF中动态地将DisplayMemberPath绑定到ListBox的ItemTemplate?

问题描述 投票:0回答:1

我正在创建一个具有ItemsSourceDisplayMemberPath属性的自定义控件,并且在ControlTemplate中有一个与此ListBox绑定的ItemsSourse控件,我想在此ListBox中使用DisplayMemberPath指定的属性,遗憾的是这不起作用:

<ListBox ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ItemsSource}">
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DisplayMemberPath}"/>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>

编辑

正如迈克斯特罗贝尔在评论中提到的那样,当我在一些博客文章中读到时,我删除了ItemTemplate并仅在ListBox中提供了DisplayMemberPath,但这甚至没有提到列表(没有滚动条):

    <ListBox ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ItemsSource}" 
DisplayMemberPath="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DisplayMemberPath}"/>

我甚至硬编码DisplayMemberPath值仍然没有工作!,它只与List<string>合作而不是List<CustomClass>

请原谅,我错过了从IEnumerable<string>更改DP类型到IEnumerable<object>感谢您的帮助!

c# wpf
1个回答
0
投票

可能是TemplatedParent对象不是你想象的那样吗?您是否尝试按指定类型遍历?

<ListBox ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ItemsSource}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type **TYPE**}}, Path=DisplayMemberPath}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
© www.soinside.com 2019 - 2024. All rights reserved.