Cập nhậtWPF MVVM ComboBox SelectedItem hoặc SelectedValue không làm việc
Sau một chút điều tra. Điều có vẻ là vấn đề là SelectedValue/SelectedItem đang xảy ra trước khi nguồn Item được tải xong. Nếu tôi ngồi nghỉ ngơi và chờ một vài giây, nó sẽ hoạt động như mong đợi. Không biết làm thế nào tôi sẽ nhận được xung quanh này.
End Cập nhật
Tôi có một ứng dụng sử dụng trong WPF sử dụng MVVM với một ComboBox. Dưới đây là ví dụ ViewModel. Vấn đề tôi gặp phải là khi chúng tôi rời khỏi trang của chúng tôi và di chuyển trở lại ComboBox không chọn giá trị hiện tại được chọn.
Xem Mẫu
public class MyViewModel
{
private MyObject _selectedObject;
private Collection<Object2> _objects;
private IModel _model;
public MyViewModel(IModel model)
{
_model = model;
_objects = _model.GetObjects();
}
public Collection<MyObject> Objects
{
get
{
return _objects;
}
private set
{
_objects = value;
}
}
public MyObject SelectedObject
{
get
{
return _selectedObject;
}
set
{
_selectedObject = value;
}
}
}
Vì lợi ích của ví dụ này cho phép nói MyObject có hai thuộc tính (văn bản và Id). XAML của tôi cho ComboBox trông như thế này.
XAML
<ComboBox Name="MyComboBox" Height="23" Width="auto"
SelectedItem="{Binding Path=SelectedObject,Mode=TwoWay}"
ItemsSource="{Binding Objects}"
DisplayMemberPath="Text"
SelectedValuePath="Id">
Không có vấn đề mà cách nào để cấu hình này khi tôi quay trở lại trang và các đối tượng được tập hợp lại ComboBox sẽ không chọn giá trị. Đối tượng đang trả về đối tượng đúng thông qua việc lấy thuộc tính mặc dù.
Tôi không chắc liệu đây có phải là vấn đề với cách mà mô hình ComboBox và MVVM hoạt động hay không. Các ràng buộc hộp văn bản chúng tôi đang làm công trình một cách chính xác.
thực hiện thực tế của chúng tôi kế thừa từ một lớp ViewBase mà thực hiện INotifyPropertyChanged.Tôi đang nâng PropertyChange nhưng hộp combo vẫn trống. – cjibo
Thậm chí tốt hơn nếu tôi đặt điểm ngắt và chờ một chút nó hoạt động. Tôi nghĩ rằng selecteditem của tôi là nhận được thiết lập trước khi ràng buộc của combobox được thực hiện. Urgh. – cjibo
Tôi quên tăng sự kiện PorpertyChanged trên điều hướng trở lại trang. – cjibo