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

xoefb8l8  于 2023-11-14  发布在  Windows
关注(0)|答案(1)|浏览(113)

如何在Windows机器上使用带有参数SelectionMode="Multiple"的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>

字符串
结果


的数据
我可以自定义所选线条的颜色(请参阅我的代码),但不能自定义选择图像和用于此图像的位置。
正如我们所看到的,有一个显示图像(白色)的地方。
如何隐藏或自定义此零件?

ma8fv8wu

ma8fv8wu1#

我已经检查了Windows上Maui的CollectionView的源代码。它是实现ListViewBase的ListView。
ListViewBase有IsMultiSelectCheckBoxEnabled Property。你可以设置属性为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
      }

字符串

相关问题