我的理解
您正在尝试在选中某个项目时在其上显示一个指示器,并且一次只能选择一个项目
因此您需要在CollectionView中将SelectionMode设置为Single,以便一次只能选择一项
然后您可以使用OnCollectionViewSelectionChanged在所选项目上显示指标,并将其隐藏在上一个项目上
您可以在这里Xamarin-Collectionview-Selection
中找到更多详细信息
,
根据您的描述,如果要让BoxView显示Collectionview项目的选中或未选中状态,建议您使用一个属性绑定BoxView IsVisible,我做一个示例,您可以看一下:
型号:
public class Model:ViewModelBase
{
private string _DisplayName;
public string DisplayName
{
get { return _DisplayName; }
set
{
_DisplayName = value;
RaisePropertyChanged("DisplayName");
}
}
private bool _selected;
public bool Selected
{
get { return _selected; }
set
{
_selected = value;
RaisePropertyChanged("Selected");
}
}
}
ViewModel:
public class collectionviewmodel:ViewModelBase
{
public ObservableCollection<Model> Items { get; set; }
public collectionviewmodel()
{
Items = new ObservableCollection<Model>();
Items.Add(new Model() { DisplayName = "AAA",Selected = false });
Items.Add(new Model() { DisplayName = "BBB",Selected = false });
Items.Add(new Model() { DisplayName = "CCC",Selected = false });
Items.Add(new Model() { DisplayName = "DDD",Selected = false });
Items.Add(new Model() { DisplayName = "EEE",Selected = false });
}
}
ContentPage:
<CollectionView
x:Name="list1"
ItemsLayout="VerticalList"
ItemsSource="{Binding Items}"
SelectionChanged="List1_SelectionChanged"
SelectionMode="Single">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal">
<Label
HorizontalOptions="StartAndExpand"
Text="{Binding DisplayName}"
TextColor="Fuchsia" />
<BoxView
HorizontalOptions="End"
IsVisible="{Binding Selected}"
Color="Fuchsia" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
public Page23 ()
{
InitializeComponent ();
this.BindingContext = new collectionviewmodel();
}
这样的屏幕截图:
本文链接:https://www.f2er.com/3151424.html