Я застрял в этом некоторое время, моя модель представления не обновляет представление. Когда я отлаживаю, модель представления обновляется, но она не отображается в представлении. Что я делаю не так?
Это на мой взгляд:
<ContentPage.BindingContext>
<viewModels:SalaryViewModel/>
</ContentPage.BindingContext>
<Label Text="{Binding sYear}" Grid.Row="2" Grid.Column="1" />
<Label Text="{Binding sTransportation}" Grid.Row="3" Grid.Column="0" />
<Label Text="{Binding sMonth}" Grid.Row="3" Grid.Column="1" />
<Label Text="{Binding sBasicSalary}" Grid.Row="3" Grid.Column="1" />
Когда я запускаю Debug.WriteLine, значения отображаются на панели вывода в Visual Studio. Это только представление, которое не получает обновленные значения. Ниже SalaryViewModel
class SalaryViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ApiServices _apiServices = new ApiServices();
private string year;
private string month;
private string BasicSalary;
private string Transportation;
public string sYear
{
get { return year; }
set
{
if (year == value)
return;
year = value;
onPropertyChanged(nameof(sYear));
}
}
public string sMonth
{
get => month;
set
{
if (month == value)
return;
month = value;
onPropertyChanged(nameof(sMonth));
}
}
public string sBasicSalary
{
get =>BasicSalary;
set
{
if (BasicSalary == value)
return;
BasicSalary = value;
onPropertyChanged(nameof(sBasicSalary));
}
}
public string sTransportation
{
get => Transportation;
set
{
if (Transportation == value)
return;
Transportation = value;
onPropertyChanged(nameof(sTransportation));
}
}
public ICommand SalaryCommand
{
get
{
return new Command(async () =>
{
string currentMonth = DateTime.Now.Month.ToString();
string currentYear = DateTime.Now.Year.ToString();
await _apiServices.FetchSalary(currentYear , currentMonth );
});
}
}
private void onPropertyChanged(string pName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pName));
}
}