Созданные пользователем группы в ListView - PullRequest
0 голосов
/ 02 июля 2018

Я хочу позволить пользователю создать новую группу в ListView после нажатия на кнопку.

   private void CreateNewGroup(object sender, TappedRoutedEventArgs e)
    {
        //Create new group in MyListView
    }

Я имею в виду создать что-то вроде этого: Группировка элементов в элементе управления ListView в Windows Forms

1 Ответ

0 голосов
/ 03 июля 2018

Для группировки ListView вы можете использовать CollectionViewSource для группировки данных из источника вашего элемента.

<Grid>
    <Grid.Resources>
        <CollectionViewSource x:Key="cvs" x:Name="cvs" />
    </Grid.Resources>
    <ListView Background="White" Foreground="Black"  ItemsSource="{Binding Source={StaticResource cvs}}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="0.5">
                    <TextBlock Text="{Binding Path=Name}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Complete}" />
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </ListView.GroupStyle>
    </ListView>
    <Button Content="Group" Click="Button_Click"/>
</Grid>

Код позади

private ObservableCollection<MyClass> myClasses;
public MainPage()
{
    this.InitializeComponent();
    myClasses = new ObservableCollection<MyClass>();
    myClasses.Add(new MyClass { Name = "Nico", Complete = false });
    myClasses.Add(new MyClass { Name = "LIU", Complete = true });
    myClasses.Add(new MyClass { Name = "He", Complete = true });
    myClasses.Add(new MyClass { Name = "Wei", Complete = false });
    myClasses.Add(new MyClass { Name = "Dong", Complete = true });
    myClasses.Add(new MyClass { Name = "Ming", Complete = false });

    this.cvs.Source = myClasses;
    this.cvs.IsSourceGrouped = False;
}

Вы можете сгруппировать данные методом групповой кнопки

private void Button_Click(object sender, RoutedEventArgs e)
{
    //Group the data
    //Set the grouped data to CollectionViewSource

    var groups = from c in myClasses
                 group c by c.Complete;

    this.cvs.Source = groups;
    this.cvs.IsSourceGrouped = true;
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...