Xamarin: заголовок группы ListView с CheckBox - PullRequest
0 голосов
/ 30 апреля 2020

В приложении у меня есть ListView, связанный с некоторыми данными, и он был сгруппирован. Мне нужен флажок в заголовке группы после того, как флажок заголовка группы был выбран, должны быть выбраны все данные ниже группы. Я добавил флажок к заголовку группировки, например

<xFormsListView:SfListView x:Name="SpecialityDiseaseListView"
                           itemsSource="{Binding SuggestionDiseaseList}" 
                           ItemSize="40" SelectionBackgroundColor="Transparent">
<xFormsListView:SfListView.DataSource>
    <dataSource:DataSource>
        <dataSource:DataSource.GroupDescriptors>
            <dataSource:GroupDescriptor PropertyName="GroupHeading"/>
        </dataSource:DataSource.GroupDescriptors>
    </dataSource:DataSource>
</xFormsListView:SfListView.DataSource>
<xFormsListView:SfListView.GroupHeaderTemplate>
    <DataTemplate>
        <ViewCell>
            <ViewCell.View>
                <StackLayout Padding="10,0,15,0">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="70*"/>
                            <ColumnDefinition Width="20*"/>
                            <ColumnDefinition Width="10*"/>
                        </Grid.ColumnDefinitions>
                        <Label Text="{Binding Key}"  FontSize="18" 
                               VerticalOptions="Center" HorizontalOptions="Start" 
                               Style="{StaticResource LabelProfileStyle}"/>
                        <buttons:SfCheckBox HorizontalOptions="End" Grid.Column="1" 
                                            IsChecked="{Binding IsSelected}"/>
                    </Grid>
                    <BoxView  HeightRequest=".5" BackgroundColor="Black" 
                              HorizontalOptions="FillAndExpand" />                                                               

                </StackLayout>
            </ViewCell.View>
        </ViewCell>
    </DataTemplate>
</xFormsListView:SfListView.GroupHeaderTemplate>
<xFormsListView:SfListView.ItemTemplate>
    <DataTemplate>
        <ViewCell>
            <StackLayout Orientation="Horizontal" VerticalOptions="FillAndExpand"
                                                             Padding="5,0,0,0" BackgroundColor="Transparent">
                <buttons:SfCheckBox Text="{Binding DisplayName}" IsChecked="{Binding IsSelected, Mode=TwoWay}" Style="{StaticResource ProfileCheckBoxStyle}"></buttons:SfCheckBox>
            </StackLayout>
        </ViewCell>
    </DataTemplate>
</xFormsListView:SfListView.ItemTemplate>

Я хотел бы проверить заголовок группы, чтобы я мог достичь желаемой способности. Может ли кто-нибудь предложить, пожалуйста, способ, как я мог бы реализовать это. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Можно использовать следующий документ для использования CheckBox в SfListView GroupHeader, CheckBox в SfListView GroupHeader

0 голосов
/ 30 апреля 2020

Я бы использовал CollectionView с SelectionMode из Multiple.

<CollectionView SelectionMode="Multiple" SelectedItems="{Binding SelectedItems}">
    <xFormsListView:SfListView.GroupHeaderTemplate>
        <DataTemplate>
            <StackLayout Padding="10,0,15,0">
                <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="70*"/>
                    <ColumnDefinition Width="20*"/>
                    <ColumnDefinition Width="10*"/>
                </Grid.ColumnDefinitions>
                <Label Text="{Binding Key}" FontSize="18" VerticalOptions="Center"
                       HorizontalOptions="Start" Style="{StaticResource LabelProfileStyle}"/>
                <CheckBox Grid.Column="2" IsChecked="{Binding IsChecked}"/>
                </Grid>
                <BoxView HeightRequest=".5" BackgroundColor="Black" 
                                 HorizontalOptions="FillAndExpand" />
            </StackLayout>
        </DataTemplate>
    </xFormsListView:SfListView.GroupHeaderTemplate>
</CollectionView>

ViewModel:

public ObservableCollection<object> SelectedItems { get; set; } = new ObservableCollection<object>();

Свойство SelectedItems должно иметь тип ObservableCollection<object> или это не сработает. Поддержка пользовательских объектов появилась в Xamarin.Forms 4.6, но в настоящее время ее не существует. Затем пользователь может выбрать элементы, которые он хочет, или вы можете использовать флажок для программного размещения элементов в SelectedItems.

Расширить CheckBox, чтобы принять строку, чтобы вы могли передать имя группы и узнать, какие элементы разместить в SelectedItems.

...