来自 ListBox ItemTemplate 的 WPF 绑定

WPF binding from ListBox ItemTemplate

我从 ListBox Itemtemplate 绑定时遇到问题,它包含一个 Expander 及其自己的 HeaderTemplateContentTemplate.

<ListBox ItemsSource="{Binding Feeds}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Expander Content="{Binding Text}" 
                          Header="{Binding Title}">

                    <Expander.HeaderTemplate>
                        <DataTemplate>
                            <DockPanel >
                                <TextBlock Text="{Binding PublishDate}" />
                                <TextBlock Text="{Binding}" />
                            </DockPanel>
                        </DataTemplate>
                    </Expander.HeaderTemplate>

                    <Expander.ContentTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical">
                                <Image Source="{Binding ImageURL}" />
                                <TextBlock Text="{Binding}" />
                            </StackPanel>
                        </DataTemplate>
                    </Expander.ContentTemplate>
                </Expander>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

PublishDate 和 ImageURL 绑定不起作用,我想将它们绑定到对象 Feed 中的属性:

Public Class Feed
    Public Property Title As String
    Public Property PublishDate As DateTime
    Public Property Text As String
    Public Property ImageURL As String
End Class

我尝试 FindAncestor 在绑定中找到 ListBoxItem 但它没有帮助我。

Expander 的 Content 用作 ContentTemplate 的 DataContext 和 HeaderTemplate 的 Header。

改为设置 Content="{Binding}" 和 Header="{Binding}"。这会将两个模板的 DataContext 设置为 ListBoxItem(即 Feed)的 DataContext。