Các vấn đề rất đơn giản: khi ItemsSource
được cập nhật Combobox không "làm mới", ví dụ: các mục mới không xuất hiện để được thêm vào danh sách các mục trong hộp tổ hợp.Làm thế nào tôi có thể làm mới một combobox sau khi sửa đổi ItemsSource ObservableCollection
Tôi đã thử giải pháp từ câu trả lời được thu thập cho câu hỏi này: WPF - Auto refresh combobox content không có may mắn.
đây là mã của tôi, XAML:
<ComboBox Name="LeadTypeComboBox" ItemsSource="{Binding LeadTypeCollection}" />
ViewModel:
public ObservableCollection<XmlNode> LeadTypeCollection { get; set; }
cách tôi cập nhật bộ sưu tập này là trong phương pháp riêng biệt, mà tải dữ liệu từ file XML Cập nhật: this.LeadTypeCollection = GetLeadTypesDataSource();
Tôi cũng đã thử sử dụng Add
cho mục đích thử nghiệm:
this.LeadTypeCollection = GetLeadTypesDataSource();
ItemToAdd = LeadTypeCollection[LeadTypeCollection.Count - 1];
this.LeadTypeCollection.Add(ItemToAdd);
bộ sưu tập cập nhật mã chắc chắn sẽ khởi động, tôi có thể xem các mục mới trong bộ sưu tập này khi gỡ lỗi, nhưng tôi không thấy chúng trong hộp tổ hợp.
Thực hiện việc này trong các tác vụ mã xaml phía sau: LeadTypeComboBox.ItemsSource = MyViewModel.GetLeadTypesDataSource();
nhưng tôi muốn đạt được điều này với MVVM, tức là mã phải nằm trong ViewModel không nhận biết được điều khiển LeadTypeComboBox.
ah, ok, ViewModel nên kế thừa 'giao diện INotifyPropertyChanged' và giải pháp của bạn hoạt động với thực hiện' PropertyChangedEventHandler' – Tsar
Có đúng vậy. Tôi sẽ dọn dẹp các mã một chút mặc dù :-) – Firedragon