[英]How to iterate through Observable collection?
嗨,大家好,我想问一下我有一个具有以下属性的类:
public class VLANSPropertyClass
{
public string vname { get; set; }
public int S_No { get; set; }
public string vid { get; set; }
public string ip { get; set; }
public string vports { get; set; }
}
我创建了一个ObservableCollection
,如下所示:
public ObservableCollection<VLANSPropertyClass> vlan { get; set; }
vlan = new ObservableCollection<VLANSPropertyClass>();
我将所有这些值添加到数据网格中:
void AddVlans()
{
var serial = new VLANSPropertyClass();
serial.S_No = vlan.Count + 1;
Console.WriteLine(serial.S_No);
serial.vname = VlanName;
Console.WriteLine(serial.vname);
serial.vid = VlanID;
Console.WriteLine(serial.vid);
serial.ip = VlanIP1 + "." + VlanIP2 + "." + VlanIP3 + "." + VlanIP4;
Console.WriteLine(serial.ip);
serial.vports = SelectedVlanPort;
vlan.Add(serial);
}
显示如下图所示:
现在我想遍历每一行并读取其值。我尝试了以下但没有用
foreach(VLANSPropertyClass v in vlan)
{
Console.WriteLine(v);
Console.WriteLine();
}
请告诉我从ObservableCollection / Datagrid读取值的可能方法。任何帮助都是非常有意义的。
您可以将班级更改为此...
public class VLANSPropertyClass
{
public string vname { get; set; }
public int S_No { get; set; }
public string vid { get; set; }
public string ip { get; set; }
public string vports { get; set; }
public override string ToString()
{
return String.Format("Name: {0}, Serial {1}", vname, S_No);
}
}
此更改包括对ToString
方法的覆盖。 只要框架需要您的类的字符串表示形式,就会调用它。
ToString是.NET Framework中的主要格式化方法。 它将对象转换为其字符串表示形式,使其适合显示。 (有关.NET Framework中格式支持的信息,请参阅格式类型。)
来源: http : //msdn.microsoft.com/zh-CN/library/system.object.tostring.aspx
使用ToString
的重写将使您能够执行此Console.WriteLine(v);
预期的结果。
当您遍历ObservableCollection <>时,通过索引访问它会以字符串形式返回集合的完整实例/项目,现在您需要使用索引或属性来引用此字符串(以防用户定义类型(类) )以访问真实内容,在我的情况下,我这样做是为了访问集合混乱中的一项的temp属性。
mess[mj_key][mn_key][0].Temp.ToString()
在这里我有3个维度,现在就避免使用它,只要了解0索引会返回字符串对象,然后使用.Temp访问温度
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.