I have a ViewModel with the following property
public Employee SelectedEmployee
{
get { return _selectedEmployee; }
set
{
if (value == _selectedEmployee) return;
_selectedEmployee = value;
if (_selectedEmployee != null)
{
StaffHolidaysViewModel.HolidayAllowance = _staffDataService.EmployeeHolidayAllowance(_selectedEmployee.Id);
FireEmployeeSelectedMessage(SelectedEmployee.Id);
}
RaisePropertyChanged();
RaisePropertyChanged(nameof(Allowance));
RaisePropertyChanged(nameof(Taken));
RaisePropertyChanged(nameof(Remaining));
RaisePropertyChanged(nameof(TotalAbsences));
RaisePropertyChanged(nameof(TotalSick));
RaisePropertyChanged(nameof(TotalNonSickAbsences));
RaisePropertyChanged(nameof(SelectedEmployeeLeavingDate));
UpdateCanExecuteChanged();
}
}
The line
StaffHolidaysViewModel.HolidayAllowance = _staffDataService.EmployeeHolidayAllowance(_selectedEmployee.Id);
Contains a call to a method that I'd like to make asynchronous. I don't know how I can do this as SelectedEmployee is a bound property.
<ComboBox Name="StaffMembers" ItemsSource="{Binding FilteredEmployees}" SelectedItem="{Binding SelectedEmployee}" Width="200" BorderThickness="1" BorderBrush="DimGray">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Since it's a property, I can't make its type Task<Employee>
What's the recommended approach to async bound MVVM properties? Or is it just not possible?