Tôi đang viết một ứng dụng nghe kết nối mạng và khi một số dữ liệu đến, nó trả lời và tùy thuộc vào dữ liệu đến, có thể cần hỏi người dùng (hiển thị hộp thoại) trước khi trả lời lại.Làm cách nào để có được đầu vào của người dùng từ giữa phương thức của mô hình trong kiến trúc Model-View-Viewmodel?
Tôi không biết cách làm điều này một cách rõ ràng trong kiến trúc MV-VM: các sự kiện và ràng buộc với các bộ sưu tập quan sát được tốt đẹp nếu tôi cần cập nhật GUI dựa trên dữ liệu đến, nhưng nếu tôi thực sự cần một anwer từ người dùng trước khi trả lời lại?
Và để làm mọi thứ tồi tệ hơn, tôi muốn thực hiện đồng bộ, vì tôi muốn thuật toán trả lời của mình ở cùng một nơi, không được phân đoạn thành nhiều cuộc gọi lại với trách nhiệm 'ai-gọi-ai' không rõ ràng.
đơn giản, một cái gì đó giống như
HandleMessage(Message msg){
string reply;
if (msg.type == 1) {
reply = ...
} else {
string question = msg...
reply = ShowModalDialog(question); // MVVM violation!
}
sender.Send(reply);
}
nhưng tôi không muốn gọi xem hoặc viewmodel từ mô hình, như mô hình cần phải được tái sử dụng và kiểm chứng - Tôi không muốn popping hộp thoại trong mọi chạy thử nghiệm, và nó sẽ vi phạm MVVM! Không có sự kiện (chúng chỉ là một chiều theo như tôi biết, và không có kênh ngược lại để trả lời nguồn gốc sự kiện) hoặc databinding, vì nó sẽ không đồng bộ.
Điều này có thể thực hiện được không? Đây là một câu hỏi mà tôi đã hỏi một vài người tuyên truyền phát triển thử nghiệm, và cho đến nay, tôi đã không nhận được câu trả lời thực tế có thể sử dụng được. Tuy nhiên, một nhu cầu cho một số đầu vào bổ sung ở giữa chế biến là khá phổ biến.
Cảm ơn! EDIT: đây là logic ứng dụng, vì vậy nó rõ ràng thuộc về mô hình, và ngay cả khi trong trường hợp này nó không, tôi muốn biết các giải pháp cho các trường hợp khi tôi thực sự cần đầu vào của người dùng ở giữa doanh nghiệp thói quen logic trong mô hình.
1 để giải thích nó tốt hơn rất nhiều so với tôi đã làm. –
Cảm ơn, điều này nghe có vẻ như một giải pháp sạch sẽ, tôi sẽ đọc các liên kết (cảm ơn họ!) –