Tôi đã nghiên cứu mẫu MVVM và đưa nó vào thực tiễn trong ứng dụng Windows Phone 8 và tôi có câu hỏi về các phương pháp hay nhất để khởi tạo và truy cập ViewModels một ứng dụng.Windows Phone 8 - MVVM ViewModels và App.xaml.cs
Khi tôi tạo ra một databound Application từ mẫu WP8 SDK, tôi nhận thấy mã này trong App.xaml.cs file:
public static MainViewModel ViewModel
{
get
{
// Delay creation of the view model until necessary
if (viewModel == null)
viewModel = new MainViewModel();
return viewModel;
}
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
// Ensure that application state is restored appropriately
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
}
Từ những gì tôi hiểu, đó có nghĩa là các Ứng dụng lớp chứa MainViewModel là thành viên tĩnh và khi ứng dụng được kích hoạt, ViewModel được tải.
Đó là trường hợp, tôi đã các câu hỏi sau:
Nếu App của tôi có một số ViewModels, sẽ tất cả chúng được lưu trữ như các thành viên bên trong App.xaml.cs tập tin?
Nếu mọi dữ liệu của ViewModel được tải cùng một lúc, làm cách nào để quản lý bộ nhớ của ứng dụng? Có thể dỡ bỏ từng dữ liệu của ViewModel và chỉ tải ViewModel đang được View của tôi sử dụng không?
Câu trả lời hay, cảm ơn rất nhiều! Và tham khảo cũng tuyệt vời :) Chỉ cần tự hỏi, nếu tôi đi với phương pháp này, cách tốt nhất để bỏ tải dữ liệu từ ViewModels của tôi là gì nếu tôi không muốn họ chiếm quá nhiều bộ nhớ khi không sử dụng ? – miguelarcilla
Tôi nghĩ rằng một trong những lựa chọn sẽ được thực hiện IDisposable trong ViewModel của bạn và Vứt bỏ nó khi rời khỏi View. – anderZubi
mở rộng câu trả lời của andersZubi, tôi thích tạo một singleton đại diện cho trạng thái hiện tại của ứng dụng và có thuộc tính kiểu Dictionary. Mỗi Trang hoặc điều khiển cần có một kiểu xem, tìm trong từ điển trước, sau đó tạo nó nếu nó chưa tồn tại và thêm viewModel vào từ điển. Sau đó, nếu nó là IDisposable, bạn không phải vứt bỏ nó khi dỡ chế độ xem ... vì bạn có một tham chiếu đến nó, bạn có thể chọn để vứt bỏ nó dựa trên bất kỳ kích hoạt tùy ý nào (ngay cả sau khi xem được dỡ), nếu bạn có "khóa" cho mô hình xem trong từ điển. –