简体   繁体   English

如何在ListView中为每个组应用不同的数据模板

[英]How to apply Different Data template for each group in ListView

Is there anyway to apply different data template for each group in listview , I can able to do HeaderTemplateSelector but how to do GroupTemplateSelector . 无论如何,有没有为列表视图中的每个组应用不同的数据模板,我可以执行HeaderTemplateSelector,但如何执行GroupTemplateSelector。

Below code i done for HeaderTemplateSelector for group 我为组的HeaderTemplateSelector完成的以下代码

<DataTemplate x:Key="Template1">
    <StackPanel Margin="0.5">
        <TextBlock Text="{Binding Path=Key}" />
    </StackPanel>
</DataTemplate>
<DataTemplate x:Key="Template2">
    <StackPanel Margin="10">
        <TextBlock Text="{Binding Path=Key}" />
    </StackPanel>
</DataTemplate>

<ListView.GroupStyle>
    <GroupStyle>
        <GroupStyle.HeaderTemplateSelector>
            <local:GroupTemplateSelector Template1="{StaticResource Template1}"
                                         Template2="{StaticResource Template2}" />
        </GroupStyle.HeaderTemplateSelector>
    </GroupStyle>
</ListView.GroupStyle>

C# C#

public class GroupTemplateSelector : DataTemplateSelector
{
    public DataTemplate Template1 { get; set; }
    public DataTemplate Template2 { get; set; }

    protected override DataTemplate SelectTemplateCore(
        object item, 
        DependencyObject container)
    {
        if (item != null)
        {
            var group = item as IGrouping<string, MyClass>;
            switch (group.Key)
            {
                case "No":
                    return Template1;
                case "Yes":
                    return Template2;
            }
        }

        return base.SelectTemplate(item, container);
    }
}

How to do different selector for Group content? 如何为组内容选择不同的选择器?

You could just implement a ListView.ItemTemplateSelector and in its SelectTemplateCore take the MyClass instance and check which group does it belong to and select the template accordingly. 您可以只实现一个ListView.ItemTemplateSelector并在其SelectTemplateCore获取MyClass实例并检查它属于哪个组,然后相应地选择模板。 To get the best performance, it would be best if MyClass had a quick way (eg a property) by which you could tell the group. 为了获得最佳性能,最好是MyClass有一种快速的方法(例如,一个属性)来告诉小组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM