如何在带有参数
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=""
Size="10"
Color="Gray">
</FontImageSource>
</ImageButton.Source>
</ImageButton>
<ImageButton Grid.Column="2" x:Name="ImgOnedrive" BackgroundColor="Transparent">
<ImageButton.Source>
<FontImageSource
FontFamily="IconsInscriptionStagiaires"
Glyph=""
Size="20"
Color="Gray"
>
</FontImageSource>
</ImageButton.Source>
</ImageButton>
<ImageButton Grid.Column="3" x:Name="ImgFolder" BackgroundColor="Transparent">
<ImageButton.Source>
<FontImageSource
FontFamily="IconsInscriptionStagiaires"
Glyph=""
Size="20"
Color="Gray">
</FontImageSource>
</ImageButton.Source>
</ImageButton>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</VerticalStackLayout>
</ContentPage>
结果
我可以自定义所选行的颜色(请参阅我的代码),但不能自定义所选图像和用于该图像的位置。
我们可以看到有一个地方显示了图像(白色)。
如何隐藏或自定义这部分?
我已经检查了 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
}