来自ListBox ItemTemplate的WPF绑定

时间:2015-01-16 12:33:29

标签: wpf binding listbox datatemplate

我在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,但它对我没有帮助。

1 个答案:

答案 0 :(得分:1)

Expander的内容充当ContentTemplate的DataContext和HeaderTemplate的Header。

设置内容=&#34; {Binding}&#34;和标题=&#34; {Binding}&#34;代替。这将两个模板的DataContext设置为ListBoxItem的DataContext(即Feed)。