2013-06-26 25 views
6

Phương pháp được đề xuất để truyền tham số từ một chế độ xem này sang một chế độ xem khác là gì, sửa đổi nó sau đó trả về giá trị cho mô hình chế độ xem gốc?Trả lại giá trị cho chế độ xem 'cha mẹ' trong MvvmCross

Phần lớn đã được viết về việc chuyển giá trị vào dạng xem tức là ShowViewModel (mới {paramX = valueY}), tuy nhiên tôi không thể tìm thấy bất kỳ ví dụ nào về việc hiển thị 'submodel' trả lại giá trị cho cha mẹ khi nó được đóng/loại bỏ trong một số phương pháp.

Mẫu duy nhất tôi đã tìm thấy có vẻ như che phủ này là http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/ tuy nhiên mã dường như không hoạt động trên mvx v3 mới hiện tại, không thực hiện được với lỗi khi giải quyết loại chế độ xem, có lẽ do phản ánh trong mvx wasn không thể xác định/đăng ký loại do subtyping hoặc generics.

Trả lời

3

Sau khi thảo luận với tác giả của liên kết từ câu hỏi của tôi, mã không hoạt động với một tinh chỉnh nhỏ và chỉnh sửa tên lớp của tôi để phù hợp với quy ước mvvmcross.

Chế độ xem của tôi được đặt tên không đúng SomethingViewController thay vì SomethingView.

Việc thay đổi mã của Greg để làm việc trên codebase MVX v3 hiện nay là thay đổi mẫu của mình từ:

public abstract class SubViewModelBase<TResult> : ViewModelBase 
{ 
    protected string MessageId { get; private set; } 

    protected SubViewModelBase(string messageId) 
    { 
     MessageId = messageId; 
    } 
    .... 
} 

tới:

public abstract class SubViewModelBase<TResult> : ViewModelBase 
{ 
    protected string MessageId { get; private set; } 

    public virtual void Init(string messageId){ 
     this.MessageId = messageId; 
    } 
} 

và dĩ nhiên trong mô hình con bạn sử dụng

public abstract class MySomeModel : SubViewModelBase<YourReturnType> 
{ 
    public override void Init(string messageId, other.. parameters..){ 
     base.Init(messageId); 
     .. your other parameters init here.. 
    } 
} 
+0

Đây có phải là giả định rằng mô hình chế độ xem gốc có tham chiếu đến trẻ không? Nếu không, làm thế nào người ta sử dụng phương thức Init để truyền messageId? –

+0

Đừng bận tâm. Đã tìm thấy bài đăng có liên quan này: http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html –

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