我的模型上有这个属性。
public class Student : BindableBase
{
public Guid Id { get; set; }
public string Fullname { get; set; }
private bool _isSelected;
public bool IsSelected { get => _isSelected; set => SetProperty(ref _isSelected, value); }
}
在我的ViewModel中,基本上加载了所有学生并将其分配到集合中。
public ObservableRangeCollection<Student> Students { get; } = new();
private List<Guid> SelectedIds { get; set; }
public override async Task OnActivatedAsync()
{
var results = await _service.GetAllStudents(take: 100);
Students.ReplaceRange(results);
}
在我的Xaml
<CollectionView ItemsSource="{x:Binding Students}">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="vm:Student">
<StackLayout>
<StackLayout Margin="0,20" Orientation="Horizontal">
<CheckBox IsChecked="{x:Binding IsSelected}" />
<StackLayout>
<Label
FontAttributes="Bold"
FontSize="17"
Text="{x:Binding Fullname}"
TextColor="{x:StaticResource ColorBlack}"
VerticalOptions="Center" />
</StackLayout>
</StackLayout>
<BoxView HeightRequest="1" Color="Gray" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
现在我想实现的是,每当我选择一个项目,我希望它被添加到一个新的项目列表对象的权利,但现在我不知道如何做到这一点。
任何帮助都非常感谢。
先谢谢你了
我可以通过使用Linq检查学生中谁拥有IsSelected = true,但这是在保存按钮期间。但我现在想做的是在检查和取消检查期间,它正在添加/删除新的List对象,这是我很难实现的。
1条答案
按热度按时间ssm49v7z1#
必须将CollectionView的属性“SelectedItem”绑定到模型中的属性:
SelectedItem="{Binding〉SelectedItem,Mode=TwoWay}"〉
和模型中的属性:
public Student SelectedItem
{
get { return selectedItem;}
集
{ selectedItem = value;();
} } private Student selectedItem;
private boolean compute(String strategy){
.....}在函数'DoSomeActionWithSelectedItem'中,您可以添加到列表等。