У меня есть ListView
с Button
, показывающим статус A (отсутствует), P (присутствует) и L (поздно) для каждого элемента.В Button
нажмите статус Text
изменив P на A, A на L.
При изменении статуса любого элемента мне нужно изменить поля AttendanceId, AttendanceTypeStatusCD, AttendanceTypeStatusId длята же запись.Это я должен сделать для нескольких записей.Мне нужно обновить источник ListView
StudentList
в соответствии с выполненным действием и опубликовать измененные данные в дБ.
<ListView x:Name="list1" ItemsSource="{Binding StudentList}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Image Source="other.png" />
<Label Text="{Binding StudentName}" />
<Button x:Name="mybtn"
BindingContext="{Binding Source={x:Reference list1}, Path=BindingContext}"
Command="{Binding BtnTextCommand}"
CommandParameter="{Binding Source={x:Reference mybtn}}"
Text="{Binding AttendanceTypeStatusId, Converter={x:StaticResource IDToStringConverter}}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Это мой класс модели
public class Student
{
public int? StudentId { get; set; }
public string StudentName { get; set; }
public int? AttendanceTypeStatusId { get; set; }
public string ClassLevelCd { get; set; }
public int? StudentDailyAttendanceId { get; set; }
public int? AbsentReasonId { get; set; }
public string AttendanceTypeStatusCD { get; set; }
public string Name { get; set; }
public string LoggedInUser { get; set; }
public string ImageValue { get; set; }
public string FirstName { get; set; }
}
Этометод во ViewModel для изменения текста определенного элемента
public void SetBtnText(object sender)
{
var view = sender as Xamarin.Forms.Button;
if (view.Text == "P")
{
view.Text = "A";
AbsentReasonId = "3001";
AttendanceTypeStatusCD= "Absent";
AttendanceTypeStatusId = "3002";
}
else if (view.Text == "A")
{
view.Text = "L";
AbsentReasonId= "2001";
AttendanceTypeStatusCD = "Late";
AttendanceTypeStatusId = "2002";
}
else
{
view.Text = "P";
AbsentReasonId = "4001";
AttendanceTypeStatusCD = "Present";
AttendanceTypeStatusId = "4002";
}
}
//Above used properties
private string _absentReasonId;
public string AbsentReasonId
{
get { return _absentReasonId; }
set { SetProperty(ref _absentReasonId, value); }
}
private string _attendanceTypeStatusCD;
public string AttendanceTypeStatusCD
{
get { return _attendanceTypeStatusCD; }
set { SetProperty(ref _attendanceTypeStatusCD, value); }
}
private int _attendanceTypeStatusId;
public int AttendanceTypeStatusId
{
get{return _attendanceTypeStatusId;}
set { SetProperty(ref _attendanceTypeStatusId, value); }
}
Вышеописанный процесс не работает , источник SutdentList не изменяется, как я могу это сделать с помощью MVVM?
Скриншот списка студентов
![enter image description here](https://i.stack.imgur.com/VoklH.png)