如何迭代Observable集合?

时间:2014-05-31 11:43:58

标签: c# wpf datagrid override observablecollection

大家好我想问我有一个类似下面的属性:

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);
        }

显示如下图所示:

enter image description here

现在我想要浏览每一行并阅读其值。我试过以下但没有工作

foreach(VLANSPropertyClass v in vlan)
   {
     Console.WriteLine(v);
     Console.WriteLine();
    }

请告诉我从ObservableCollection / Datagrid读取值的可能方法。任何帮助都会非常明显。

2 个答案:

答案 0 :(得分:0)

您可以将课程更改为此...

  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中格式化支持的信息   框架,请参阅格式化类型。)

来源:http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

使用覆盖ToString将允许您执行Console.WriteLine(v);预期结果。

答案 1 :(得分:-1)

当您遍历ObservableCollection&lt;&gt;时,通过索引访问它会以字符串的形式返回集合的完整实例/项目,您现在需要使用索引或属性引用此字符串(以防用户定义) type(class))为了访问真实内容,在我的情况下,我这样做是为了访问集合项目的临时属性。

mess[mj_key][mn_key][0].Temp.ToString()

这里我有3个维度,暂时避免它,只需要理解0索引返回字符串对象,然后使用.Temp

访问温度

希望它有帮助!