xamarin 如何跟踪模型属性的更改

sgtfey8w  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(91)

我的模型上有这个属性。

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对象,这是我很难实现的。

ssm49v7z

ssm49v7z1#

必须将CollectionView的属性“SelectedItem”绑定到模型中的属性:

<CollectionView  ItemsSource="{Binding View}"

SelectedItem="{Binding〉SelectedItem,Mode=TwoWay}"〉
和模型中的属性:
public Student SelectedItem
{
get { return selectedItem;}

{ selectedItem = value;();
} } private Student selectedItem;
private boolean compute(String strategy){
.....}在函数'DoSomeActionWithSelectedItem'中,您可以添加到列表等。

相关问题