【发布时间】:2017-11-01 16:30:17
【问题描述】:
我有一个具有以下属性的 ViewModel
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();
}
}
线
StaffHolidaysViewModel.HolidayAllowance = _staffDataService.EmployeeHolidayAllowance(_selectedEmployee.Id);
包含对我想要进行异步的方法的调用。我不知道我该怎么做,因为 SelectedEmployee 是一个绑定属性。
<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>
由于它是属性,我无法使其类型为Task<Employee>
异步绑定 MVVM 属性的推荐方法是什么?还是根本不可能?
【问题讨论】:
-
我的理解是这是不可能的。绑定机制要求属性在那个时刻直接返回一个值。 有一些可用的模式可以间接处理它。请参阅 Stephen Cleary 的 MSDN 帖子:msdn.microsoft.com/en-us/magazine/…
标签: c# wpf mvvm async-await