Theo mô hình MVVM:
- The View biết về ViewModel - nó sẽ có một tham chiếu đến nó hoặc là một trường hợp cụ thể hoặc một giao diện
- ViewModel nên không biết gì về quan điểm tại tất cả các.
Nếu bạn cần để xử lý các sự kiện, sau đó có hai cách mà tôi biết để làm điều đó:
1: Expose một lệnh trong viewmodel của bạn, và sử dụng liên kết dữ liệu để kích hoạt nó. Đây là cách ưa thích của tôi, ví dụ:
class MyViewModel
{
public ICommand ClickCommand { get; set; }
}
<Button Command="{Binding Path=ClickCommand}" />
Nếu bạn làm điều này thì bạn có thể kiểm tra lệnh bằng cách chỉ cần gọi myViewModel.ClickCommand.Execute
theo cách thủ công.
2: Expose một hàm trong viewmodel, và viết tuyệt đối tối thiểu trong file .xaml.cs
để xử lý sự kiện này và gọi hàm, ví dụ:
class MyViewModel
{
public void HandleClick(){ }
}
<Button Click="MyClickHandler">
//.xaml.cs file
public void MyClickHandler(Object sender, EventArgs e) {
m_viewModel.HandleClick()
}
Nếu bạn làm điều này, sau đó bạn có thể kiểm tra bằng cách chỉ cần gọi myViewModel.HandleClick
theo cách thủ công. Bạn không cần phải bận tâm với đơn vị kiểm tra mã MyClickHandler
vì nó chỉ có 1 dòng!
Nguồn
2009-03-11 22:51:42