Tôi chỉ mới bắt đầu với MVVM và đã đánh một rào cản mà tôi hy vọng ai đó có thể giúp tôi. Tôi đang cố gắng để tạo ra một View đơn giản với 2 hộp danh sách. Lựa chọn từ hộp danh sách đầu tiên sẽ điền vào hộp danh sách thứ hai. Tôi có một lớp được tạo để lưu trữ thông tin mà tôi muốn liên kết.Quan sátCollection không cập nhật Xem
MyObject Class (Object Quan sát chỉ là một lớp cơ sở mà thực hiện INotifyPopertyChanged)
public class MyObject : ObservableObject
{
String _name = String.Empty;
ObservableCollection<MyObject> _subcategories;
public ObservableCollection<MyObject> SubCategories
{
get { return _subcategories; }
set
{
_subcategories = value;
RaisePropertyChanged("SubCategories");
}
}
public String Name
{
get { return _name; }
set
{
_name = value;
RaisePropertyChanged("Name");
}
}
public MyObject()
{
_subcategories = new ObservableCollection<EMSMenuItem>();
}
}
Trong viewmodel của tôi, tôi có hai ObservableCollections tạo
public ObservableCollection<EMSMenuItem> Level1MenuItems { get; set; }
public ObservableCollection<EMSMenuItem> Level2MenuItems { get; set; }
Trong constructor của tôi về ViewModel tôi có:
this.Level1MenuItems = new ObservableCollection<EMSMenuItem>();
this.Level2MenuItems = new ObservableCollection<EMSMenuItem>();
this.Level1MenuItems = LoadEMSMenuItems("Sample.Xml");
Điều đó phù hợp với các mục Level1 và chúng hiển thị chính xác trong Chế độ xem. Tuy nhiên, tôi có lệnh được gọi khi người dùng nhấp vào một mục trong hộp danh sách, trong đó có các mục sau:
Level2MenuItems = ClickedItem.SubCategories;
Vì một số lý do này không cập nhật giao diện người dùng của hộp danh sách thứ hai. Nếu tôi đặt một điểm ngắt tại vị trí này tôi có thể thấy rằng Level2MenuItems có thông tin chính xác được lưu trữ trong nó. Nếu tôi viết một vòng lặp foreach và thêm chúng riêng lẻ vào bộ sưu tập Level2MenuItems thì nó sẽ hiển thị chính xác.
Cũng như là một thử nghiệm tôi đã thêm phần sau đây để các nhà xây dựng:
Level2MenuItems = Level1MenuItems[0].SubCategories;
Và đó cập nhật một cách chính xác.
Vậy tại sao mã sẽ hoạt động như mong đợi trong hàm dựng hoặc khi lặp qua, nhưng không phải khi người dùng nhấp vào một mục trong hộp danh sách?
Cảm ơn. Chính xác những gì tôi cần. –