2010-09-10 27 views
5

làm thế nào tôi có thể datatemplate một UserControl với một ViewModel với một hàm dựng không rỗng?DataTemplate một ViewModel với một NON-Empty Constructor?

public PersonViewModel(Person person) 
{ 
    _person= person; 
    // do some stuff       
} 

Việc liên kết trong Xaml này sẽ bị lỗi khi Ctor không trống. Nhưng khi tôi sử dụng quan hệ cha/con với ViewModels, tôi phải truyền đối tượng người đó tới hàm tạo của ViewModel ...

Làm thế nào để bạn đối phó với tình huống đó?

+1

Chế độ xem của bạn có thể có bất kỳ constutors nào bạn thích. Đây là Chế độ xem (ví dụ: UserControl) của bạn nên có cấu trúc mặc định. Phải có cái gì đó sai với mã của bạn. Làm thế nào về việc đăng một ví dụ hoàn chỉnh hơn (mà uncludes các View + XAML) – bitbonk

Trả lời

1
var person = new Person(); 
var viewModel = new PersonViewModel(person); 

var view = new EditPersonView(viewModel); // use overloaded constructor to inject DataContext 
// OR 
var view = new EditPersonView{ DataContext = viewModel }; 

Nếu bạn thực sự muốn thuyết minh quan điểm mô hình trong XAML, sau đó bạn cần để lộ một tài sản public Person Person và gắn bó với các nhà xây dựng parameterless. Chỉ cần làm trong set set Person những gì bạn đã làm trong constructor. Tất nhiên, bây giờ bạn đã mở một thùng giun vì bạn cũng sẽ cần phải khởi tạo Person trong XAML với một constructor không có tham số và những thứ sớm trở nên rất xấu xí…

+0

như bạn nói xấu xí ... không có giải pháp trong tầm nhìn:/ – Elisabeth

+0

@Lisa Tôi có thể hỏi lý do tại sao bạn muốn nhanh chóng xem mô hình từ XAML? Đây là những gì làm cho mọi thứ lộn xộn. – Jay

+4

vì tôi thấy điều này hữu ích: ................................ Elisabeth

Các vấn đề liên quan