Tôi nhầm lẫn về mô hình hoặc mô hình xem và cách đặt tên cho mô hình này.Quy ước đặt tên và mô hình hóa cho Mô hình và Chế độ xemMô hình trong MVVM
Vì mục đích đơn giản, tôi sẽ để lại INotifyPropertyChange
trong số đó.
Lớp sau rõ ràng là một mô hình:
class CountryModel
{
public string Name { get; set; }
public string Location { get; set; }
}
gì bạn chủ yếu là nhìn thấy trên web là một mô hình điểm sẽ được xác định như sau:
class CountryViewModel
{
public CountryViewModel
{
// initialize data (not ideal place, I know, but keeping it simple!)
}
public ObservableCollection<CountryModel> Countries
{
private get;
set;
}
}
Tại sao không phải là ở trên ví dụ: Countries
, ví dụ: CountriesModel
? Tại sao nó được coi là một mô hình xem?
Trường hợp đó có phải là trường hợp kỹ thuật không? Chúng ta có nên có một lớp khác cho mô hình xem không?
class CountryViewModel
{
private ObservableCollection<CountryModel> _countries = new ....;
public CountryViewModel
{
}
public ObservableCollection<CountryModel> Countries
{
private get { return _countries ?? _countries = LoadCountries(); }
set { _countries = value; }
}
private ObservableCollection<CountryModel> LoadCountries()
{
ObservableCollection<CountryModel> countries = new ...;
foreach (CountryModel country in CountriesModel)
{
countries.add(country);
}
return countries;
}
}
Có phải ý nghĩa trên không? Tôi chỉ không hiểu tại sao nó có vẻ là một tiêu chuẩn và lý do tại sao bạn sẽ gọi CountriesViewModel
khi cho tôi nó phải là CountriesModel
và một CountryViewModel
nên được tạo ra truy cập dữ liệu từ CountriesModel
.
Ngoài ra, nếu bạn tuân theo những gì trên web, nghĩa là CountryModel
và CountryViewModel
có chứa bộ sưu tập quan sát CountryModel
, thì bạn sẽ đối phó với các quốc gia có chứa mỗi danh sách thành phố như thế nào? Tôi sẽ có CityModel
làm POCO và sau đó cho danh sách các thành phố, tôi sẽ tạo một CityViewModel
có bộ sưu tập quan sát là CityModel
.
Nhưng sau đó sao? Tôi có phải thực hiện phần CityViewModel
trong số CountryModel
của mình không? Điều đó dường như không đúng chút nào! Có lẽ nó là và ai đó có thể làm rõ điều đó. Đây là nơi tôi bị lẫn lộn nhiều hơn khi tôi đã tạo ra một CountryModel
với các thuộc tính Name
, Location
và thuộc tính loại List<CityModel>
, nhưng làm cách nào để trình bày chính xác điều này trong MVVM?
Cách xác định chính xác điều này? Đặc biệt là phần mà bạn có một danh sách các đối tượng và mỗi đối tượng đó chứa một danh sách khác. Đó là một mô hình, một mô hình xem và làm cách nào để xử lý danh sách bên trong mô hình của tôi?
Tôi hiểu những gì bạn đang nói về viewmodel và đó là tốt nhưng tôi vẫn còn bối rối về cách tôi nên đối phó với mô hình miền. Lấy quốc gia làm ví dụ, tôi có nên sử dụng CountryModel và CountriesModel để lưu trữ danh sách các quốc gia của mình không và sau đó tôi có một Quốc giaModel để liên kết Quốc giaModel với chế độ xem của tôi không? – Thierry
Không, bạn không nên có một lớp mô hình miền mà chỉ là một danh sách của một lớp mô hình miền khác; tuy nhiên nếu bạn là một lớp mô hình miền cho phép nhiều giá trị quốc gia, thì bạn nên sử dụng danh sách lớp mô hình miền quốc gia (thành phần). –