列表框分组-绑定头与类型不起作用

本文关键字:类型 不起作用 绑定 列表 | 更新日期: 2023-09-27 18:19:12

我正在尝试使用ListBox的分组功能对我的对象进行排序和分组。

这个特性的整个排序部分工作得很好,但是当试图在GroupStyle中绑定属性时,它就不起作用了。

我按照MSDN上的一篇文章做了和作者完全一样的步骤,但它仍然不起作用。

这是一个在List中然后绑定到ListBox的对象。ItemsSource

public class SearchResult
{
    public string name { get; set; }
    public ImageBrush image { get; set; }
    public Guid result { get; set; }
    public resultType type { get; set; }
}

这是我想分组的type属性,它是一个Enum,看起来像这样

public enum resultType
{
    Artist,
    Album,
    Track,
    Playlist
}
对于我的xhtml代码,下面是列表框本身。
<ListBox Width="400" MouseDoubleClick="SearchResultContainer_MouseDoubleClick" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="Transparent" Height="330" SelectionMode="Extended" VerticalAlignment="Stretch" ItemsSource="{Binding Path=srs}" Margin="0,370,0,0" x:Name="SearchResultContainer">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Height="50" Background="Transparent" Margin="5">
                    <Border HorizontalAlignment="Left" Height="50" Width="50" Background="{Binding Path=image}"/>
                    <TextBlock Text="{Binding Path=name}" VerticalAlignment="Center" FontWeight="Light" Margin="60,0" FontSize="18" Foreground="White"></TextBlock>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
        <ListBox.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock FontWeight="Light" FontSize="15"
                     Text="{Binding Path=type}"/> <---- Here is where I'm getting the issue
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </ListBox.GroupStyle>
        <ListBox.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
        </ListBox.Resources>
    </ListBox>

Binding to the type property just doesn't seem to do anything!我已经确保对象在属性中有一个值

这里是最后一个相关代码,这是你添加/删除分组的地方:

    CollectionView myView;
    private void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        myView = (CollectionView)CollectionViewSource.GetDefaultView(SearchResultContainer.ItemsSource);
        if (myView.CanGroup == true)
        {
            PropertyGroupDescription groupDescription
                = new PropertyGroupDescription("type");
            myView.GroupDescriptions.Add(groupDescription);
        }
        else
            return;
    }
    private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
    {
        myView = (CollectionView)CollectionViewSource.GetDefaultView(SearchResultContainer.ItemsSource);
        myView.GroupDescriptions.Clear();
    }

就像我说的,我紧跟作者的一举一动。任何建议都将非常感谢!

列表框分组-绑定头与类型不起作用

默认DataContextGroupStyleCollectionViewGroup,其中包含Name属性,您可以绑定到它将获得属性的值,您分组的项目。

<TextBlock FontWeight="Light" FontSize="15"
           Text="{Binding Path=Name}"/>