【发布时间】:2014-02-15 16:13:18
【问题描述】:
如果我对此进行了正确的研究,我之前得到了一些帮助,一位用户说最好使用Dictionary 来存储我的Country 和Places。
所以我创建了我的Dictionary:
Dictionary<string, NewCountryClass> NTCD = new Dictionary<string, NewcountryClass>();
当用户单击按钮时,它将触发此类,我希望它在运行时在Dictionary 内创建newCountryClass 的实例。它将添加字符串,即newCountryTitle.Country,然后是Class。
public void AddCountryCollection()
{
newCountryClass = new NewCountryClass(newCountry,"");
Collections.Add(newCountryClass);
NTCD.Add(newCountryClass.Country, newCountryClass);
}
假设用户添加了Country,它在运行时创建了这个Dictionary,他们添加了4个Countries,但现在想返回并添加一个Place 第二个国家/地区内的标签。
这是newCountryClass:
private string _country;
public string Country
{
get { return _country; }
set
{
if (_country.Equals(value))
return;
_country= value;
RaisePropertyChanged(() => Country);
}
}
private ICollection<string> _places;
public ICollection<string> Places
{
get
{
if (_places== null)
_places= new ObservableCollection<string>();
return _places;
}
set
{
if (value == _places)
return;
_places= value;
RaisePropertyChanged(() => Places);
}
}
如果他们创建了 4 个,并且他们想将 Place 添加到他们创建的 第二个 的 Country 内的列表中,我该如何找到它?
【问题讨论】:
-
您将使用保存它的密钥 - 在本例中为国家/地区。字典的重点在于它是一个键/值映射。您将其与国家/地区一起存储,因此您需要与国家/地区一起查找。没有“添加的第二个值”的固有概念 - 用户实际上不会只是通过该国家/地区吗?这里的上下文有点混乱......
-
@Ben - 您确实需要阅读 .NET 数据结构和概念。我知道 Jon Skeet 在之前的问题中提到了这一点,这是很好的建议。
-
@JonSkeet 用户将传入
Country,因此他们可能会传入England、Spain和France。这些将被列出,然后当他们在Countries之一上Right-Click和“添加地点”时,他们可以添加Place(在newCountryClass中作为ICollection)
标签: c# wpf class mvvm dictionary