我正在尝试迭代字典并根据字典中每个对象中的特定属性为字典中的每个项创建一个新的文本块。但是,在迭代时,它只会找到最近添加的对象,然后对字典中的许多对象重复此操作。即如果我有4个对象,我将有4个文本块都具有相同的文本。任何人都可以建议我哪里出错了?这是我的代码:
foreach (KeyValuePair<string, MyObjects> entry in MyDictionary)
{
MyTextblock = new TextBlock();
MyTextblock.Margin = new Thickness(0, 5, 0, 0);
MyStackPanel.Children.Add(MyTextblock);
MyTextblock.Text = MyObjects.name;
}
答案 0 :(得分:3)
您应该使用这样的条目对象:
foreach (KeyValuePair<string, MyObjects> entry in MyDictionary)
{
MyTextblock = new TextBlock();
MyTextblock.Margin = new Thickness(0, 5, 0, 0);
MyStackPanel.Children.Add(MyTextblock);
MyTextblock.Text = entry.Value.name;
}
答案 1 :(得分:0)
更正确的方法是迭代字典Keys集合:
foreach (string Key in MyDictionary.Keys)
{
MyTextblock = new TextBlock();
MyTextblock.Margin = new Thickness(0, 5, 0, 0);
MyStackPanel.Children.Add(MyTextblock);
MyTextblock.Text = MyDictionary[Key].name;
}
在这种情况下,即使是更好的选择,因为您的循环似乎无法在任何地方使用密钥,而是迭代Values
集合:
foreach (MyObjects Value in MyDictionary.Values)
{
MyTextblock = new TextBlock();
MyTextblock.Margin = new Thickness(0, 5, 0, 0);
MyStackPanel.Children.Add(MyTextblock);
MyTextblock.Text = Value.name;
}