如何在Windows机器上使用maui的collectionview的自定义选择器?

问题描述 投票:0回答:1

如何在带有参数

SelectionMode="Multiple"
的Windows机器上使用maui在collectionview中使用自定义选择器,或者如何隐藏它?

xaml文件是这样的:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiCollectionMVVM.MainPage">
        <ContentPage.Resources>
            <Style TargetType="Grid">
                <Setter Property="VisualStateManager.VisualStateGroups">
                    <VisualStateGroupList>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="Selected">
                                <VisualState.Setters>
                                    <Setter Property="BackgroundColor"
                                            Value="LightSkyBlue" />
                                    
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateGroupList>
                </Setter>
            </Style>
        </ContentPage.Resources>
        
        <VerticalStackLayout >
    
            <CollectionView x:Name="StagiaireCollectionView"
                            SelectionMode="Multiple"
                            ItemsSource="{Binding students}" >
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        
                        <Grid >
                            <Grid.RowDefinitions>
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
    
                            <Label Grid.Column="0"
                                   Text="{Binding Name}" x:Name="TxtUserPrimary" FontSize="12" VerticalOptions="Center"/>
                            <ImageButton Grid.Column="1" x:Name="ImgLicence"   VerticalOptions="Center" BackgroundColor="Transparent">
                                <ImageButton.Source>
                                    <FontImageSource
                                        FontFamily="IconsInscriptionStagiaires"
                                        Glyph="&#xE800;"
                                        Size="10"
                                        Color="Gray">
                                    </FontImageSource>
                                </ImageButton.Source>
                            </ImageButton>
                            <ImageButton Grid.Column="2" x:Name="ImgOnedrive" BackgroundColor="Transparent">
                                <ImageButton.Source>
                                    <FontImageSource
                                                FontFamily="IconsInscriptionStagiaires"
                                                Glyph="&#xE800;"
                                                Size="20"
                                                Color="Gray"
                                                >
                                    </FontImageSource>
                                </ImageButton.Source>
                            </ImageButton>
                            <ImageButton Grid.Column="3" x:Name="ImgFolder" BackgroundColor="Transparent">
                                <ImageButton.Source>
                                    <FontImageSource
                                        FontFamily="IconsInscriptionStagiaires"
                                        Glyph="&#xE800;"
                                        Size="20"
                                        Color="Gray">
                                    </FontImageSource>
                                </ImageButton.Source>
                            </ImageButton>
                        </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>
    
        </VerticalStackLayout>
</ContentPage>

结果

我可以自定义所选行的颜色(请参阅我的代码),但不能自定义所选图像和用于该图像的位置。

我们可以看到有一个地方显示了图像(白色)。

如何隐藏或自定义这部分?

xaml maui collectionview
1个回答
0
投票

我已经检查了 Windows 上 Maui 的 CollectionView 的源代码。实现ListViewBase的是ListView。

ListViewBase 有 IsMultiSelectCheckBoxEnabled 属性。您可以将该属性设置为 false,它将隐藏复选框位置。

只需将以下代码放入MainPage.xaml.cs中:

    protected override void OnHandlerChanged()
    {
        base.OnHandlerChanged();
#if WINDOWS
            var listviewbase = StagiaireCollectionView.Handler.PlatformView as Microsoft.UI.Xaml.Controls.ListViewBase;
            listviewbase.IsMultiSelectCheckBoxEnabled = false;
#endif
      }
© www.soinside.com 2019 - 2024. All rights reserved.