如果您有一个包含多个模型(即十个加号)的视图模型,每个模型都需要相同的功能(即绑定属性) - 唯一不同的是实际的模型类型。它们对每个人都有其自己的绑定属性是有意义的,还是应该将这个设计重新分配到一些更优雅的模型字典中,只需要一个绑定属性,而关键字是与模型关联的字符串。或者,有没有比字典更好的选择?我应该如何设计一个包含许多模型的视图模型?
我试图简化我的视图模型的设计一般,所以任何意见将不胜感激。
如果您有一个包含多个模型(即十个加号)的视图模型,每个模型都需要相同的功能(即绑定属性) - 唯一不同的是实际的模型类型。它们对每个人都有其自己的绑定属性是有意义的,还是应该将这个设计重新分配到一些更优雅的模型字典中,只需要一个绑定属性,而关键字是与模型关联的字符串。或者,有没有比字典更好的选择?我应该如何设计一个包含许多模型的视图模型?
我试图简化我的视图模型的设计一般,所以任何意见将不胜感激。
我也有过类似的事情
我有不同的类别,如CustomerData
,EmployeeData
,OrderData
我收集了1个集名为集(显然)所有这些类 和我收集从那里设置的意见的DataContext对我只是用正确的道路,引用我需要在我的XAML例如Text="{Binding Path=CustomerData.Name}"
或Text="{Binding Path=EmployeeData.Name"}"
编辑回答评论数据: 我有一类叫做数据这conatians我的OnPropertyChanged。 当我需要做某些事情时,如果数据发生变化,我只是在创建数据的类中或在使用它的类中说这些。
collection.CustomerData.PropertyChanged += new PropertyChangedEventHandler(Customer_PropertyChanged);
也是我的一个类的实例: 公共类CustomerData:数据 { 私人字符串公司= “”; private string ship =“”; private string adress =“”; private string city =“”; 私人字符串zipCode =“”; private string country =“”; private string btw_nmbr =“”; private bool isTempCustomer = true; 私人列表phoneNumbers; private List电子邮件地址;
private string fileName;
#region public methods
public string Company
{
get
{
return company;
}
set
{
if (company.Trim() != value.Trim())
{
company = value;
OnPropertyChanged("Company");
}
}
}
public string Ship
{
get
{
return ship;
}
set
{
if (ship.Trim() != value.Trim())
{
ship = value;
OnPropertyChanged("Ship");
}
}
}
public string Adress
{
get
{
return adress;
}
set
{
if (adress.Trim() != value.Trim())
{
adress = value;
OnPropertyChanged("Adress");
}
}
}
public string City
{
get
{
return city;
}
set
{
if (city.Trim() != value.Trim())
{
city = value;
OnPropertyChanged("City");
}
}
}
public string ZipCode
{
get
{
return zipCode;
}
set
{
if (zipCode.Trim() != value.Trim())
{
zipCode = value;
OnPropertyChanged("ZipCode");
}
}
}
public string Country
{
get
{
return country;
}
set
{
if (country.Trim() != value.Trim())
{
country = value;
OnPropertyChanged("Country");
}
}
}
public string BTW_Nmbr
{
get
{
return btw_nmbr;
}
set
{
if (btw_nmbr.Trim() != value.Trim())
{
btw_nmbr = value;
OnPropertyChanged("BTW_Nmbr");
}
}
}
public bool IsTempCustomer
{
get
{
return isTempCustomer;
}
set
{
isTempCustomer = value;
OnPropertyChanged("IsTempCustomer");
}
}
public List<ContactData> PhoneNumbers
{
get
{
return phoneNumbers;
}
set
{
phoneNumbers = value;
OnPropertyChanged("PhoneNumbers");
}
}
public void AddPhoneNumber(ContactData cd)
{
phoneNumbers.Add(cd);
OnPropertyChanged("PhoneNumbers");
}
public List<ContactData> EmailAdresses
{
get
{
return eMailAdresses;
}
set
{
eMailAdresses = value;
OnPropertyChanged("EmailAdresses");
}
}
public void AddEmailAdress(ContactData cd)
{
eMailAdresses.Add(cd);
OnPropertyChanged("EmailAdresses");
}
public string FileName
{
get
{
return fileName;
}
set
{
fileName = value;
OnPropertyChanged("FileName");
}
}
#endregion
}
请添加代码示例。另外,考虑在codereview.stackexchange.com上询问这个问题。 –
“绑定属性”究竟是什么?你可以将数据绑定到属性,但并不真正使这些属性变得特别。你的意思是依赖属性?您不需要具有依赖属性来使其可绑定。对于普通模型,你应该考虑实现'INotifyPropertyChanged'。 – poke
如何为你的模型定义一个通用的类或接口,然后保留它们的'List <>'? – Shoe