2013-05-21 40 views
13

Cách chính xác để mở Chế độ xem trong mvvmcross từ chế độ xem không phải là gì? Từ trong chế độ xem, chúng tôi sẽ sử dụng ShowViewModel <> (..).Hiển thị chế độ xem từ chế độ không xem/chế độ xem trong mvvmcross

Cụ thể là chúng tôi đang phản hồi thông báo đẩy mở ứng dụng (với trọng tải tùy chỉnh) quyết định chế độ xem sẽ được tải.

Chúng tôi có một workaround hackety chỉ cho bằng chứng về khái niệm, chỉ muốn để có được một ý tưởng về cách tiếp cận MVX đúng

Trả lời

16

Tôi không nghĩ rằng có một 'cách chính xác' - Tôi nghĩ rằng nó phụ thuộc vào ứng dụng của bạn và những gì bạn cần nó để làm.

Đối với một số trường hợp cụ thể - ví dụ: ViewModel-> ViewModel và AppStart - MvvmCross cung cấp một số phương pháp thuận tiện:

Nhưng tổng thể , mọi lớp học đều có thể yêu cầu một số ShowViewModel bằng cách gọi:

Hơn nữa, có cơ sở c lass - MvxNavigatingObject.cs - có thể trợ giúp với điều này (đó là một lớp cơ sở của MvxViewModel và MvxAppStart) - vì vậy bạn có thể dễ dàng cung cấp một hoặc nhiều dịch vụ như INavigateMyselfService những người triển khai kế thừa từ MvxNavigatingObject.

public interface INavigateMyselfService 
    { 
     void GoWild(string side); 
    } 

    public class NavigateMyselfService 
    : MvxNavigatingObject 
    , INavigateMyselfService 
    { 
     public void GoWild(string side) 
     { 
      ShowViewModel<WildViewModel>(new { side = side }); 
     } 
    } 
+1

Ah IMvxViewDispatcher chính xác là những gì tôi đang tìm kiếm! INavigateMyselfService tương tự như những gì tôi đã làm, ngoại trừ việc thực hiện của tôi là .. không đẹp – geoffreys

+0

@Stuart cảm ơn tất cả công việc bạn làm, đặc biệt là trong cộng đồng Xamarin! Điều này chỉ là hoàn hảo. Tôi đang sử dụng nó để xử lý các trường hợp ngoại lệ trái phép, allover ứng dụng của tôi. Nếu tôi gặp ngoại lệ như vậy, giờ đây tôi có thể sử dụng tính năng này để điều hướng dễ dàng đến màn hình đăng nhập. – dynamokaj

+0

@Stuart Chúng ta đang thấy các lỗi ngẫu nhiên để điều hướng giữa các mô hình xem trong một kịch bản mà chúng ta điều hướng đến SplashScreenViewModel và sau một khoảng thời gian tới MainViewModel của chúng ta. Cả hai đều đang sử dụng ShowViewModel (); API. Chúng tôi kết thúc bằng nhật ký "mvx: Chẩn đoán: 70.22 Hiển thị ViewModel MainViewModel" nhưng ứng dụng vẫn nằm trên SplashScreenViewModel. Bất kỳ gợi ý nào ở đây về cách gỡ lỗi? Thnx! – baraka

0

http://forums.xamarin.com/discussion/4694/conditionally-call-registerappstart-with-mvvmcross

Kiểm tra liên kết ở trên và bạn sẽ nhận được ý tưởng

Trong trường hợp của tôi, tôi muốn để khởi động ứng dụng từ thứ tile.For này, tôi phải khởi động trang cụ thể cho Secondary lát.

Mô hình chế độ xem Khởi động ứng dụng ban đầu của tôi là LoginViewModel và mô hình chế độ xem bắt đầu ứng dụng tùy chỉnh của tôi là HomeViewModel.

Tôi đã kiểm soát điều này từ lớp App.cs (Core) đến lớp MyCustomAppStart.

Tham khảo liên kết ở trên