GroupStyleSelector for a ListView
本文关键字:ListView for GroupStyleSelector | 更新日期: 2023-09-27 18:26:00
根据我在这里看到的关于堆栈溢出的其他问题,我正在尝试为我的ListView创建一个自定义的组样式扇区。
public class TestGroupStyleSelector : GroupStyleSelector
{
protected override GroupStyle SelectGroupStyleCore(object item, uint level)
{
return (GroupStyle)App.Current.Resources["grpStyle"];
}
}
<ListView GroupStyleSelector="{StaticResource grpStyleSelector}">
我有两个错误:
错误1"TestGroupStyleSelector":无法从密封类型"System.Windows.Controls.GroupStyleSelecter"派生
错误2"TestGroupStyleSelector"类型的对象无法应用于要求类型为"System.Windows.Controls.GroupStyleSelecter"的属性。
正如这里的其他问题所示,我已经声明了这个类,在这一点上,我非常不知道如何为我的listview创建一个groupstyleselect,有什么想法吗?
在WPF中,使用
<ListView GroupStyleSelector="{StaticResource grpStyleSelector}" />
并且从GroupStyleSelector继承选择器将导致"无法从密封类型派生"System.Windows.Controls.GroupStyleSelector"异常。
相反,使用
<ListView>
<ListView.GroupStyle>
<GroupStyle ContainerStyleSelector="{StaticResource grpStyleSelector}" />
</ListView.GroupStyle>
</ListView>
并从StyleSelector
GroupStyleSelector
是由ItemsControl
:暴露的Delegate
用法:
public GroupStyleSelector GroupStyleSelector
{
get => (GroupStyleSelector)GetValue(GroupStyleSelectorProperty);
set => SetValue(GroupStyleSelectorProperty, value);
}
声明:
public delegate GroupStyle GroupStyleSelector(CollectionViewGroup group, int level);
它的类型是delegate
,根据语言规范,它不能从继承。
您需要做的是创建一个从StyleSelector
:派生的类
public class GroupStyleSelector : StyleSelector
{
public override Style SelectStyle(object item, DependencyObject container)
{
return base.SelectStyle(item, container);
}
}