我如何将我的反序列化流直接绑定到我的数据网格上?

本文关键字:我的 数据网 数据 网格 绑定 反序列化 | 更新日期: 2023-09-27 18:03:06

我能够从数据库中获取现有数据以加载到我的数据网格上,并且它工作得很好。所有的列表都绑定到数据网格上。然而,在一个场景中,我只需要将反序列化的流直接绑定到数据网格上。我尝试了一个类似的方法,db的一个,它不工作,由于某种原因。我运行了调试器,我绑定到单独数据网格的两个列表都包含反序列化的流,所以它们不是空的。我想我漏掉了什么。

这是我所做的:

public static LotInformation DeserializedStream(string filePath) {
        XmlRootAttribute xRoot = new XmlRootAttribute();
        xRoot.ElementName = "lot_information";
        xRoot.IsNullable = false;
        // Create an instance of lotinformation class.
        var lot = new LotInformation();
        // Create an instance of stream writer.
        TextReader txtReader = new StreamReader(filePath);
        // Create and instance of XmlSerializer class.
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(LotInformation), xRoot);
        // DeSerialize from the StreamReader
        lot = (LotInformation)xmlSerializer.Deserialize(txtReader);
        LotInformation newList = new LotInformation();
        List<Components> DeserialComponentsList = new List<Components>();
        List<Families> DeserialFamiliesList = new List<Families>(); 
        foreach (Components comp in lot.Components)
        {
            newList.Components.Add(comp);
            Console.WriteLine(comp); 
        }

        DeserialComponentsList = newList.Components.ToList(); 
        foreach (Families fam in lot.Families)
        {
            newList.Families.Add(fam);
            Console.WriteLine(fam); 
        }
        DeserialFamiliesList = newList.Families.ToList();
        Console.WriteLine(DeserialComponentsList.Count);
        Console.WriteLine(" "); 
        Console.WriteLine(DeserialFamiliesList.Count);
        // Close the stream reader
        txtReader.Close();
        return lot;
    }
属性:

public List<Components> DeserialComponentsList
    {
        get {
            return deserialComponentsList;
        }
        set {
            deserialComponentsList = value;
            RaisePropertyChanged("DeserialComponentsList"); 
        }
    }
    public List<Families> DeserialFamiliesList
    {
        get
        {
            return deserialFamiliesList;
        }
        set
        {
            deserialFamiliesList = value;
            RaisePropertyChanged("DeserialFamiliesList");
        }

编辑:似乎属性没有得到数据列表传递给他们的某种原因。将反序列化字符串添加到列表后,程序永远不会运行或达到属性。程序仅在视图第一次打开时检测属性(属性为null),但在选择文件并将该反序列化xml放入列表并将该列表传递给属性之后,由于某种原因无法工作。

我如何将我的反序列化流直接绑定到我的数据网格上?

这是因为该方法是静态方法。它是一个非静态方法,我删除了声明的新列表,因为属性之前已经声明过了。

我把public static LotInformation DeserializedStream(string filePath)改成了public void DeserializedStream(string filePath)