列表框分组-绑定头与类型不起作用
本文关键字:类型 不起作用 绑定 列表 | 更新日期: 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();
}
就像我说的,我紧跟作者的一举一动。任何建议都将非常感谢!
默认DataContext
的GroupStyle
是CollectionViewGroup,其中包含Name
属性,您可以绑定到它将获得属性的值,您分组的项目。
<TextBlock FontWeight="Light" FontSize="15"
Text="{Binding Path=Name}"/>