我正在研究WPF MVVM应用程序。我想要在绑定到我的数据网格的集合发生变化时触发某种事件。
Ex: - 我的数据网格项源是ObservableCollection UserList
我希望当我清除UserList集合时,某些事件会触发datagrid来通知自己。我已经尝试过datagrid的这个事件DataContextChanged,但它没有帮助。
请指导
由于
答案 0 :(得分:1)
如果您遵循MVVM模式,则不需要处理UI事件。您的对象集合是ViewModel的一部分,因此您应该在ViewModel上添加一个PropertyChanged事件,该事件在更改集合时触发。
答案 1 :(得分:0)
如果您使用的是MVVM,那么您就拥有了这样的属性
/// <summary>
/// The <see cref="UserList" /> property's name.
/// </summary>
public const string UserListPropertyName = "UserList";
private ObservableCollection<UserList> _userList = new ObservableCollection<UserList>();
public ObservableCollection<UserList> UserList
{
get
{
return _userList;
}
set
{
if (_userList != value)
{
_userList = value;
RaisePropertyChanged(UserListPropertyName);
}
}
}
在setter部分中,您可以调用视图模型中的任何方法,如果您使用的是代码,那么您不使用MVVM模式
答案 2 :(得分:0)
如果您希望在对集合的引用发生更改时触发事件,那么您应该在Rumplin演示的ViewModel中使用和OnPropertyChanged事件。但是,如果您想知道何时将User添加到集合中或从集合中删除,则需要在ObservableCollection上为CollectionChanged事件添加处理程序。
答案 3 :(得分:0)
您正在寻找的事件是CollectionChanged
。
您(以及其他尝试做同样事情的人)的混淆源是您认为当集合发生变化时,数据网格的来源已经发生变化。不是这样。数据网格的ItemsSource
仍然是集合 - 您尚未将其分配给其他集合或清除它。因此PropertyChanged
和DataContextChanged
没有被提升,处理它们在这里没有任何效果。
请注意,CollectionChanged
非常复杂,因为很多事情构成了对集合的更改,因此您需要非常彻底地理解它才能正确处理它。我怀疑你并不是真的需要处理它 - 你正试图通过绑定来做更好的事情。