WPF列表框分组标头不绑定

时间:2015-10-01 08:33:30

标签: wpf xaml listbox

我有一个CollectionViewSource,它由ObservableCollection中的Created proprty分组。分组在列表框中工作,但我无法获取标题文本以显示创建日期。

CollectionViewSource如下:

<Window.Resources>
    <CollectionViewSource x:Key="TaskListColSource" Source="{Binding Path=TaskItems}">
        <CollectionViewSource.SortDescriptions>
            <componentModel:SortDescription PropertyName="Created" />
        </CollectionViewSource.SortDescriptions>

        <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="Created" />
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

</Window.Resources>

我的列表框GroupStyle如下:

        <ListBox.GroupStyle>
            <GroupStyle>
                <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                        <Setter Property="Foreground" Value="White" />
                        <Setter Property="Focusable" Value="False"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type GroupItem}">
                                    <Expander IsExpanded="True" Foreground="White">
                                        <Expander.HeaderTemplate>
                                            <DataTemplate DataType="{x:Type models:TaskItem}">
                                                <TextBlock  x:Name="asdf" Text="{Binding Created}" Foreground="White"/>
                                            </DataTemplate>
                                        </Expander.HeaderTemplate>
                                        <ItemsPresenter />
                                    </Expander>

                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </GroupStyle.ContainerStyle>
            </GroupStyle>
        </ListBox.GroupStyle>

有人可以帮我在相关的文本块中显示创建的日期吗?

我按以下方式绑定列表框:

<ListBox x:Name="TaskListBox" ItemsSource="{Binding Source={StaticResource TaskListColSource}}">

1 个答案:

答案 0 :(得分:0)

您需要为此扩展程序设置Header,如下所示:

<Expander IsExpanded="True" Foreground="White" 
          Header="{Binding}">
</Expander>

每个DataContext中的隐式GroupItem是每个数据项。因此Header应设置为每个数据项(通过{Binding})。 HeaderTemplate隐含DataContext作为其Header,但您尚未为其指定任何内容。

修改

如果你想要一些StringFormat,为什么不在TextBlock内设置它(让Header保持不变):

 <TextBlock  x:Name="asdf" Text="{Binding Created, StringFormat=dd MMM yy, ConverterCulture=en-GB}" Foreground="White"/>