3

ここでスタックオーバーフローについて見た他の質問に従って、ListView のカスタムグループスタイルセクターを作成しようとしています。

public class TestGroupStyleSelector : GroupStyleSelector
{
    protected override GroupStyle SelectGroupStyleCore(object item, uint level)
    {
            return (GroupStyle)App.Current.Resources["grpStyle"];
    }
}

<ListView GroupStyleSelector="{StaticResource grpStyleSelector}">

これには2つのエラーがあります:

エラー 1 'TestGroupStyleSelector': シール型 'System.Windows.Controls.GroupStyleSelector' から派生できません

エラー 2 タイプ "TestGroupStyleSelector" のオブジェクトは、タイプ "System.Windows.Controls.GroupStyleSelector" を予期するプロパティに適用できません。

ここでの他の質問が示すように、クラスを宣言しました。この時点で、リストビューのグループスタイルセレクターを作成する方法についてかなり迷っています。アイデアはありますか?

4

2 に答える 2

3

WPFでは、

<ListView GroupStyleSelector="{StaticResource grpStyleSelector}" />

GroupStyleSelectorからセレクターを継承すると、「封印された型 'System.Windows.Controls.GroupStyleSelector から派生できません'」という例外が発生します。

代わりに、

<ListView>
   <ListView.GroupStyle>
     <GroupStyle ContainerStyleSelector="{StaticResource grpStyleSelector}"  />
   </ListView.GroupStyle>
</ListView>

StyleSelectorからセレクターを継承します

于 2015-09-29T08:53:41.917 に答える
1

GroupStyleSelectorによってDelegate公開されItemsControlます:

使用法:

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);
    }
}
于 2015-04-08T07:36:27.607 に答える