【发布时间】:2010-09-22 08:44:29
【问题描述】:
我开始为我的一个 Silverlight 应用程序实现 MVVM。 (我没有使用任何工具包)。
我的页面包含一个带有两个组合框的部分。在其中一个组合中选择一个项目会触发搜索,该搜索会更新组合下方可见的网格。
每个组合的选定项都绑定到我的视图模型中的一个属性。这些属性的设置器引发 INotifyPropertyChanged 属性更改并自动更新绑定到网格的数据。
一切都很好,直到我需要添加一个重置按钮,其目的是重置搜索参数,即:每个组合框不应指示任何项目并且网格应该为空。
- 如果视图模型中的重置函数更新了支持字段,则 UI 不会反映更改,因为不会调用 RaisePropertyChanged。
- 如果视图模型中的重置功能更新了属性,UI 将反映更改,但网格将更新两次:将第一个属性重置为 null 以及第二个属性时
任何帮助表示赞赏
/// <summary>Selected user.</summary>
public User SelectedUser
{
get { return _selectedUser; }
set
{
_selectedUser = value;
RaisePropertyChanged("SelectedUser");
UpdateProducts();
}
}
/// <summary>Selected product category.</summary>
public ProductCategory SelectedProductCategory
{
get { return _selectedProductCategory; }
set
{
_selectedProductCategory = value;
RaisePropertyChanged("SelectedProductCategory");
UpdateProducts();
}
}
// Reset option 1
public void Reset()
{
_selectedUser = null;
_selectedProductCategory = null;
_products = null;
}
// Reset option 2
public void Reset()
{
SelectedUser = null;
SelectedProductCategory = null;
// No need to update Products which has already been updated twice...
}
【问题讨论】:
标签: mvvm