【发布时间】:2011-11-03 03:57:31
【问题描述】:
我有一个绑定到 ViewModel (VM) 的自定义数据输入表单。数据输入表单假设显示字段供用户输入员工数据,即每个表单 1 个员工。 EmployeeViewModel 从 web 服务加载一堆数据,比如一个 Employee(用于更新)和许多集合。这些集合由“部门”组成,例如员工属于许多部门之一,“主管”,例如员工被分配给主管,依此类推。因此,在我的 VM 的构造函数中,我从服务中获取数据(),我必须等到它完成。
因此,在 OnLoadComplete 上,我将返回的数据分配给 Employee,这是我的 VM 上的一个属性,并且还为 ComboBoxes 加载所有集合,例如 Departments。
VM 上的其他属性在加载 b/c 时呈现 NullExceptions,它们看起来像这样:
private Department_selectedDepartment;
public Department SelectedDepartment
{
get
{ return this.Employee.Department; } **// where error occurs**
set
{
_selectedDepartment = value;
this.Employee.Department = value;
OnPropertyChanged("SelectedDepartment");
}
}
在我的 XAML 中,我有集合及其“已选择...”部分:
<ComboBox
ItemsSource="{Binding Departments, Mode=OneWay}"
SelectedItem="{Binding SelectedDepartment, Mode=TwoWay}" />
当 SelectedDepartment 的 getter 在 VM 加载时命中时,它说 this.Employee" 为空,所以我得到一个异常。
其他人是如何做到这一点的,即等到 Employee 被加载?
【问题讨论】:
标签: c# silverlight mvvm