我如何将我的反序列化流直接绑定到我的数据网格上?
本文关键字:我的 数据网 数据 网格 绑定 反序列化 | 更新日期: 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)