如果您有一個包含多個模型(即十個加號)的視圖模型,每個模型都需要相同的功能(即綁定屬性) - 唯一不同的是實際的模型類型。它們對每個人都有其自己的綁定屬性是有意義的,還是應該將這個設計重新分配到一些更優雅的模型字典中,只需要一個綁定屬性,而關鍵字是與模型關聯的字符串。或者,有沒有比字典更好的選擇?我應該如何設計一個包含許多模型的視圖模型?
我試圖簡化我的視圖模型的設計一般,所以任何意見將不勝感激。
如果您有一個包含多個模型(即十個加號)的視圖模型,每個模型都需要相同的功能(即綁定屬性) - 唯一不同的是實際的模型類型。它們對每個人都有其自己的綁定屬性是有意義的,還是應該將這個設計重新分配到一些更優雅的模型字典中,只需要一個綁定屬性,而關鍵字是與模型關聯的字符串。或者,有沒有比字典更好的選擇?我應該如何設計一個包含許多模型的視圖模型?
我試圖簡化我的視圖模型的設計一般,所以任何意見將不勝感激。
我也有過類似的事情
我有不同的類別,如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